如何使用ajax和jquery从php Web服务返回简单文本[重复]
Posted
技术标签:
【中文标题】如何使用ajax和jquery从php Web服务返回简单文本[重复]【英文标题】:How to return simple text from php web service using ajax and jquery [duplicate] 【发布时间】:2016-04-21 23:07:48 【问题描述】:我想使用 php web 服务来完成这个简单的登录任务。我只是想根据我在我的 php 中回显的文本结果来验证用户名和密码。
PHP:
<?php
// Include confi.php
include_once('confi.php');
$found = false;
$email = isset($_POST['email']) ? mysql_real_escape_string($_POST['email']) : "";
$password = isset($_POST['password']) ? mysql_real_escape_string($_POST['password']) : "";
if(!empty($email) && !empty($password))
$login=mysql_num_rows(mysql_query("select *
from `login`
where `email`='$email'
and `password`='$password'"));
$result =array();
if($login!=0)
echo "success";
else
echo "failed";
@mysql_close($conn);
/* Output header */
header('Content-type: text/plain');
?>
如果用户名和密码匹配;它显示成功。
jQuery
<script>
$(function ()
$("#logon").click(function ()
var email = $("#username").val();
var password = $("#pass").val();
var dataString = "email=" + email + "&password=" + password;
if ($.trim(email).length > 0 & $.trim(password).length > 0)
$.ajax(
type: "POST",
url: "http://*****/login.php",
data:dataString,
crossDomain: true,
cache: false,
beforeSend: function () $("#logon").html('Connecting...'); ,
success: function (data)
if (data == "success")
alert(result+"You are in");
localStorage.login = "true";
localStorage.email = email;
window.location.href = "test.html";
else if (data == "failed")
alert("Login error");
$("#logon").html('Login');
);
);
);
</script>
【问题讨论】:
当你打印像alert(data);
这样的返回字符串时,输出是什么?
无输出。到那个地步还不是晚上。 ://
你错过了 ajax 中的数据类型 html
@devpro – dataType
是可选的。如果你省略它,jQuery 将只使用 Content-Type 响应头。
你有crossDomain: true,
(它可能不会像你想象的那样做)和一个绝对URI。您是否正在提出跨域请求?您是否在浏览器的开发人员工具中查看过控制台?您没有抱怨缺少 Access-Control-Allow-Origin 标头的错误消息吗?
【参考方案1】:
您缺少 json 函数,您必须对要发送回请求的内容进行编码
<?php
/*output the header here*/
header("Content-Type: application/json");
// Include confi.php
include_once('confi.php');
$response['Status'];// declare a variable to store msg
$found = false;
$email = isset($_POST['email']) ?
mysql_real_escape_string($_POST['email']) : "";
$password = isset($_POST['password']) ?
mysql_real_escape_string($_POST['password']) : "";
if(!empty($email) && !empty($password))
$login=mysql_num_rows(mysql_query("select *
from `login`
where `email`='$email'
and `password`='$password'"));
$result =array();
if($login!=0)
$response['Status']=""success";
else
$response['Status']="failed";
@mysql_close($conn);
在这里进行更改
$result= json_encode($message);
echo $result;
?>
在你的 jquery 数据到 ajax 函数中添加
dataType:"json",
success: function (data)
if (data.Status == "success") //here check the condition
alert(result+"You are in");
localStorage.login = "true";
localStorage.email = email;
window.location.href = "test.html";
else if (data.Status== "failed") //here check the condition
alert("Login error");
$("#logon").html('Login');
【讨论】:
问题中的 PHP 表示它正在发回纯文本。 javascript 中没有任何内容表明它需要 JSON。 jQuery会将纯文本解析为纯文本,这很好。 在这种情况下,返回 html 或 json 实现相同的功能并不重要以上是关于如何使用ajax和jquery从php Web服务返回简单文本[重复]的主要内容,如果未能解决你的问题,请参考以下文章
如何实现一个 jquery ajax 表单,它通过 php 请求从 web api 请求信息?
如何使用 Web 服务和 jQuery Ajax 启用 CORS
如何从 Java Rest Web 服务返回 ajax 值?