json解析错误:预期'}'

时间:2014-11-05 01:21:33

标签: javascript jquery ajax json

我正在进行ajax调用

$.ajax({
   url: 'url',
   data: {},
   method: 'POST',
   enctype: 'multipart/form-data',
   dataType: 'json',
   success: function(data){
      // handle success
   },
   error: function(data, textStatus){
       //handle error
   }
});

这里我的json回复是

{
    person: {
        name: 'John'
    }

正如您所看到的,json响应不是很好。因此我得到了错误

json parse error: Expected '}'

中的

error: function(data, textStatus){

}

如何,我可以忽略此解析错误并继续执行,因为我收到了响应。

2 个答案:

答案 0 :(得分:6)

您无法忽略解析器错误。由于解析器错误,未解析任何数据。修复您的数据。

如果无法修复数据服务器端,请获取更好的数据源。如果你不能这样做,你必须修复它的客户端,在那里连接}然后手动解析(禁用jQuery解析),并希望你的整个系统不会崩溃当某人稍后修复他们的错误时(这是不可避免的)。

来自@squint

  

不要请求JSON或发送JSON响应头,jQuery也不会解析它。

这意味着您正在使用dataType: 'json'请求JSON。请改用text。 jQuery文档中的更多信息:http://api.jquery.com/jquery.ajax/

答案 1 :(得分:1)

你可以把jQuery ajax调用中的成功/错误方法想象成信使 - 从某种意义上来说就是你的信使。

如果调用了success方法,服务器会为您提供好的数据,您将在后续函数中处理该数据。如果调用了error方法,则服务器会向您提供错误数据。你仍然可以处理错误方法中的数据,但问题是它是坏数据(如果你愿意,可以认为它是不可靠的)。如果数据不可靠,那么通过提供调整来尝试修改代码中的错误数据是不好的编程技术。

作为程序员,您希望始终追求良好的数据 - 因此,重点是从远程服务器获取良好的数据,以便调用成功方法,而不是错误。这有意义吗?