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请求有什么问题?
答案 0 :(得分:1)
AJAX调用中的contentType
属性设置发送到服务器的数据的格式。默认情况下,PHP不接受JSON。从AJAX调用中删除contentType行。
默认情况下,JQuery将数据发送为application/x-www-form-urlencoded; charset=UTF-8
,这可能是您的PHP脚本可能正确填充$_POST
数组所需的内容。
这解释了为什么您的用户名值未设置。这也是人们经常犯的一个常见错误。
答案 1 :(得分:0)
解决以下错误后效果很好:
contentType: "application/json; charset=utf-8",
谢谢 marteljn 。
将变量prop
,error
,username
括在单个代码中。