3

我对 AJAX 相当陌生。我试图让一个简单的登录脚本工作。这是使用 jQuery 1.6.4。在下面的 AJAX 中,当用户单击一个按钮时,它会将电子邮件地址和密码发送到 login.php。这一切似乎都很好。问题在于成功功能。当电子邮件和密码正确时,它应该返回 true。当它不起作用时,它应该返回 false。使用 Firebug,我发现它可以与 console.log 一起使用。如果我写警报(响应);它也可以正常工作。但是,即使 response 等于 true,条件始终评估为 false。我已经尝试了 if(response=="true")and if(response==="true"),将变量放在函数之外,以及其他一些没有成功的事情。有人对如何解决这个问题有任何想法吗?

谢谢你的任何帮助或想法,杰森。

阿贾克斯:

$("#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);
4

2 回答 2

1

响应是一个对象,因为您有“dataType:'json'”。jQuery 将尝试将 responseText 转换为 JSON。如果您需要检查服务器返回的数据,请尝试使用

if (response === true) {

}

或者干脆

if (response) {

}

或者只是让 jQuery 通过删除数据类型返回字符串:'json'

于 2012-07-04T17:02:22.293 回答
0

不要使用完全等号的引号===。采用

if (response === true)

因为您的 PHP 脚本返回true,而不是"true".

我不热衷于 PHP,但尝试删除 true 周围的引号。

于 2012-07-04T17:01:11.063 回答