我遇到了一个非常奇怪的问题,我认为这之前有用,但现在已经没有了。我甚至不记得改变什么。我尝试使用较旧的jQuery库。
我在第68行遇到错误:http://i.imgur.com/H51wG4G.png :(匿名函数)。这是指第68行: var jsondata = $ .parseJSON(data);
这是我的ajax功能 由于这个错误,我无法让我的警报工作。顺便说一句,这个脚本用于登录,所以如果我刷新我的网站,我将登录,以便工作。我还可以返回我的json对象,如图所示。 {“success”:false,“msg”:“Fel anv \ u00e4ndarnamn eller l \ u00f6senord。”,“redirect”:“”}
当我得到这个时,如果我成功了,我将检查login.success == true并从logged-in.php获取登录面板。
$('#login_form').submit(function()
{
var login = $.ajax(
{
url: '/dev/ajax/trylogin.php',
data: $(this).serialize(),
type: 'POST',
}, 'json');
login.success(function(data)
{
var jsondata = $.parseJSON(data);
console.log(jsondata);
if(jsondata.success == true)
{
$.get("/dev/class/UI/logged-in.php", function(data) {
$(".login-form").replaceWith(data);
});
}
else
{
alert(jsondata.msg);
$('#pwd').val('');
}
});
return false;
});
谢谢。
答案 0 :(得分:1)
您的回复不是有效的JSON。你看:“意外的令牌<”。
这意味着您的回复包含意外的“<”并且它无法转换为JSON格式。
将console.log(data)
放在之前将其转换为JSON。
答案 1 :(得分:1)
如果您在附加的屏幕截图中显示的response
是可以接受的,那么您的PHP脚本中就会出现生成JSON
响应的问题。确保生成此响应的PHP
脚本(或该文件中包含的任何其他脚本)未使用名为SITE_TITLE
的常量。如果这些PHP文件中的任何一个需要使用该常量,请确保在某处定义SITE_TILE
并将其包含在这些文件中。
可能发生的情况是,PHP
响应生成中涉及的JSON
个文件之一可能已经以某种方式发生了变化并开始使用SITE_TITLE
costant,而没有先定义它,或者不包括包含该常量的文件。
或者,JSON
代中涉及的所有文件都没有更改,而是error_reporting
设置可能已更改,现在PHP
解释器正在输出{{1}当它看到一些未定义的常量时,它会调整文本。
解决问题
如果notice
常量未定义,请定义它。
如果在某个其他文件中定义了SITE_TITLE
常量,请在生成响应的SITE_TITLE
脚本中包含该文件。
否则,我不建议这样做,请设置PHP
设置以忽略error_reporting
。
答案 2 :(得分:0)
你应该使用login.done(),而不是login.success():) 成功仅在ajax()函数内使用!不推荐使用成功对象函数,只能将成功设置为Ajax()param!
并且不需要解析数据,因为它已经是Json格式了!
$('#login_form').submit(function()
{
var login = $.ajax(
{
url: '/dev/ajax/trylogin.php',
data: $(this).serialize(),
type: 'POST',
}, 'json');
login.done(function(data)
{
var jsondata = data;
console.log(jsondata);
if(jsondata.success == true)
{
$.get("/dev/class/UI/logged-in.php", function(data) {
$(".login-form").replaceWith(data);
});
}
else
{
alert(jsondata.msg);
$('#pwd').val('');
}
});
return false;
});