2013-05-26 101 views
0

我得到了一个很奇怪的问题,我认为这工作之前,但它不再。我什至不记得改变任何事情。我尝试了一个较老的jQuery库。jQuery Ajax - 无法解析json?

我得到一个错误,说:第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并从login-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

请'解析之前粘贴'data'使用'的console.log(数据)的内容。 –

回答

1

如果您在附加屏幕截图中显示的response有问题,那么您的PHP脚本中存在产生JSON响应的问题。确保生成此响应的PHP脚本(或该文件中包含的任何其他脚本)未使用名为SITE_TITLE的常量。如果这些PHP文件中的任何一个需要使用该常量,请确保该文件中包含SITE_TILE

可能发生的情况是JSON响应生成中涉及的PHP文件之一可能以某种方式发生了变化,并且开始使用costant而没有首先定义它,或者没有包含包含该常量的文件。

或者,也许没有参与JSON生成的文件都变了,而是你的error_reporting设置可能已经改变,现在当它看到一些不确定的常数PHP解释器输出notice水平文本。

解决问题

如果SITE_TITLE常数是不确定的,定义它。 如果在其他某个文件中定义了SITE_TITLE常量,请在生成响应的PHP脚本中包含该文件。

否则,我不建议这样做,请将您的error_reporting设置设置为忽略Notice

+0

哇。每个人都很有帮助。你确实是对的,这是恒定的问题。我不知道这会产生如此的影响,因为这是一个“通知”错误。但我现在明白为什么。我会将此标记为正确答案。谢谢大家。 – mpj

+1

好的。很高兴帮助。 –

1

您的回复不是有效的JSON。你会看到:“意外标记<”。

这意味着您的回复中包含意外的“<”,并且无法将其转换为JSON格式。

console.log(data)之前转换成JSON。

0

您应该使用login.done(),而不是login.success():) 成功仅在ajax()函数中使用!成功对象函数已被弃用,您只能将成功设置为Ajax()参数!

而且没有必要解析数据,因为它已经是Json格式了!

jQuery Ajax

$('#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; 
}); 
+0

谢谢。我将使用登录完成而不是成功。 Json格式已经?呃不知道是这样。 – mpj