Ajax不会从php返回特定数据

Ajax不会从php返回特定数据,php,ajax,login,Php,Ajax,Login,此ajax代码发布变量并显示$('#data').html(数据)在php中被eco-ed编辑的代码-哪一个有效 $.post('login.php',{username:username,password:password}, function(data) { $('#data').html(data); if (data=='login'){ alert("sucess"); } }); 但是,问题在于下一行不起作用: if (data ==

此ajax代码发布变量并显示
$('#data').html(数据)
php
中被
eco-ed
编辑的代码-哪一个有效

$.post('login.php',{username:username,password:password},
 function(data)
 {
    $('#data').html(data);
    if (data=='login'){
        alert("sucess");
    }
 });
但是,问题在于下一行不起作用:

 if (data == 'login') {
     alert("sucess");
 }
如果
data==login
我已经看过了不同的教程,这段代码应该是可以工作的,但由于某些原因它不能工作


谢谢

您可以简单地输入JSON数据类型并使用JSON数组作为响应

$.post('login.php',{username:username,password:password},
 function(data)
 {
    if (data.status=='login'){
        $('#data').html(data.status);
        alert("sucess");
    } else{
        alert('not login');
    }
 }, 'json');
在你的PHP中

<?php
#.. put any code before that response because after it you must put exit. 
# No other data except it must be sent! Else you will break it..
echo json_encode(array('status'=>'login'));
exit();

数据保存login.php响应的返回结果

在您的例子中,它可能返回html,比如
欢迎用户x
(我不知道您的代码返回什么,所以它是一个示例)

如果是这种情况,代码应该检查这是否有效。我建议使用JSON。php检查登录数据。如果登录尝试有效,则返回login:true;并重定向用户。
有效时,只需返回数据错误并用jquery显示。

使用此代码,如果您的响应失败,您将得到适当的警报

var jqxhr = $.post("login.php", {username : username, password : password}, function(data) {
  alert("success" + data);
  console.log(data);
},'text')
.done(function() { alert("second success"); })
.fail(function() { alert("error"); })
.always(function() { alert("finished"); });
否则,您将收到“成功”和您的数据的警报

有关如何使用此功能的详细信息,请参见

为了确保它能工作。输入login.php

<?php 

echo 'ajax works';
exit;

?>

您使用的旧函数将被删除。使用PDO或其他发动机。
你的代码不安全。SQL注入是可能的。

尝试回显数据以查看返回的内容。此代码在显示“登录”时会显示对话框,但在您的描述中,它应该在“登录”时起作用。这可能是疏忽吗?它仍然不起作用。实际返回的数据是什么?从代码看,它应该是一个字符串,但它实际返回的是什么?您是否查看了控制台中的错误?请尝试执行“警报(数据)”并告诉我们它说了什么(或者它可能已经对您自己有所启示;)