我被ajax响应卡住了,它总是进入else部分,它在会话的名为statusmsg的类中打印no,还添加了meta标记。它在本地主机中很好,但在实时站点中不好。
输出:
<div class="statusmsg">
Welcome
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<title>Untitled Document</title>
no
</div>
这是我使用ajax jquery 的登录代码
$.ajax({
type: "POST",
url:"scripts/ajax_login.php",
data:"account="+account+"&pswd="+password,
beforeSend: function()
{
$(".login_result").show();
},
success: function(resp)
{
if($.trim(resp) == 'no')
{
$(".warn_msg").html("Wrong Username/Email And/or Passwrd");
return false;
}
else
{
$(".statusmsg").html("Welcome "+$.trim(resp));
$(".loginArea").hide();
$(".sh_logout").show();
}
},
complete: function()
{
$(".login_result").hide();
},
error: function(e)
{
alert('Error: ' + e);
}
}); //end Ajax
}//else
return true;
}//function
=========================================
ajax_login.php
session_start();
include(dirname(dirname(__FILE__))."/includes/config.php");
$account = mysql_real_escape_string($_POST['account']);
$password = mysql_real_escape_string(md5($_POST['pswd']));
$sql = (strpos($account,'@')===false)?"SELECT * FROM register_members WHERE username = '".$account."' AND password = '".$password."'":"SELECT * FROM register_members WHERE password = '".$password."' AND email = '".$account."' ";
$qry = mysql_query($sql);
$msg = mysql_num_rows($qry); //returns 0 if not already exist
$row = mysql_fetch_assoc($qry);
if(!$msg > 0)
{
echo trim('no');
}
else
{
$_SESSION['user'] = $row['username'];
$user = trim($_SESSION['user']);
echo trim($user);
}
if(!$msg > 0)
{
echo trim('no');
}
应该是
if !($msg > 0)
{
echo trim('no');
}
否则,您将否定$msg中的值。如果为0,则变为1;如果为1,则变0。(布尔值的基本否定)。
因此,1和0都不会大于0,因此它永远不会echo trim('no');
。
但基本上,你可以检查$msg
是否等于零,比如:
if ($msg == 0) {
echo trim('no');
}
else {
}