1
function do_login()
{
$('.loginsubmit').click(function(e)
{
    var datum=$('.loginform').serialize();
    $.ajax({
        type: "POST",
        url: "login",
        data: datum,
        contentType: "application/json; charset=utf-8",
        dataType:"json",
        success: function(data)
        {
            if(data.prop=="false")
            {
                $('p#login-error-notif').text(data.error);
            }
            else if(data.prop=="true")
            {
                $('#logindrp span').text("Welcome "+data.name);
            }
        }
    });            
});
} //closing do_login function

这是用户单击登录按钮时调用的函数。我看到的错误是未捕获的引用错误:'prop' of null。

PHP页面中的代码是

        if(isset($_POST['username']))
        {
         $username=$_POST['username']

...// proceed with checking the username and password

    if($check_login)
    {
    $return=array(prop=>"true", name=>$name, username=>$username);  
        echo json_encode($return);  
    }
            else
            {
            $return=array(prop=>"false", error=>"Invalid username/password.");  
        echo json_encode($return);
            }


        }

但我观察到这部分没有被执行。我的意思是“用户名”没有发送到页面。我通过在其中添加代码来检查setcookie("username", $username);它。永远不会创建 cookie。我的 AJAX 请求有什么问题?

4

2 回答 2

1

AJAX 调用中的contentType属性设置发送到服务器的数据格式。默认情况下,PHP 不接受 JSON。从您的 AJAX 调用中删除 contentType 行。

默认情况下,JQuery 将数据发送为application/x-www-form-urlencoded; charset=UTF-8,这可能是您的 PHP 脚本可能需要$_POST正确填充数组。

这解释了为什么您的用户名值未设置。这也是人们一直犯的一个非常常见的错误。

于 2013-08-08T12:39:01.440 回答
0

解决以下错误后,它运行良好:

  1. contentType: "application/json; charset=utf-8",谢谢你marteljn

  2. 将变量prop, error,括username在单个代码中。

于 2013-08-08T13:18:37.057 回答