我对AJAX很新。我试图让一个简单的登录脚本工作。这是使用jQuery 1.6.4。在下面的AJAX中,当用户单击按钮时,它会将电子邮件地址和密码发送到login.php。
这一切似乎都很好。问题在于成功功能。当电子邮件和密码正确时,它应该返回true。当它不起作用时它应该返回false。使用Firebug,我发现它适用于console.log。如果我写警报(响应);它也可以正常工作。但是,即使response等于true,条件总是计算为false。我已经尝试了if(response=="true")
和if(response==="true")
,将变量放在函数之外,还有其他一些事情没有成功。有人会对如何解决这个问题有任何想法吗?
感谢您提供任何帮助或想法, 杰森。
AJAX:
$("#firstpage").live('pageinit', function (evt) {
$('#button').click(function(){
var $form = $('#login'),
$inputs = $form.find("input"),
serializedData = $form.serialize();
$.ajax({
type: 'POST',
url: 'php/login.php',
data: serializedData,
success: function(response){
console.log("Response: "+response);
if(response=="true")
{
$('#firstpage #wrong').text("Login script is working");
} else {
$('#firstpage #wrong').text("Your email and password combination did not match.");
}
},
dataType: 'json'
});
});
});
如果有帮助,这是我的login.php脚本。
$email = $_POST['email'];
$password = $_POST['password'];
require_once("DB.php");
$connection = mysql_connect($host, $user, $pass) or die ("Unable to connect!");
mysql_select_db($db) or die ("Unable to select database!");
$query = "SELECT * FROM member WHERE email='$email' AND password='".md5($_POST['password'])."'";
$result = mysql_query($query) or die ("Error in query: $query. ".mysql_error());
$num_rows = mysql_num_rows($result);
if($num_rows>0){
$output = true;
} else {
$output = false;
}
echo json_encode($output);
答案 0 :(得分:1)
响应是一个对象,因为你有" dataType:' json'"。 jQuery将尝试将responseText转换为JSON。如果您需要检查服务器返回的数据,请尝试使用
if (response === true) {
}
或只是
if (response) {
}
或者让jQuery通过删除数据类型返回字符串:' json'
答案 1 :(得分:0)
请勿使用具有完全等号===
的引号。使用
if (response === true)
因为您的PHP脚本返回true
,而不是"true"
。
我不喜欢使用PHP,但请尝试删除关于true的引号。