使用jQuery AJAX登录无效

时间:2013-08-08 12:26:10

标签: php ajax

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'为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请求有什么问题?

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

解决以下错误后效果很好:

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

  2. 将变量properrorusername括在单个代码中。