【问题标题】:json parse error: Expected '}'json 解析错误:应为 '}'
【发布时间】:2014-11-05 01:21:32
【问题描述】:

我正在做一个 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){

}

我是否可以忽略此解析错误并在收到响应后继续执行。

【问题讨论】:

    标签: javascript jquery ajax json


    【解决方案1】:

    您不能忽略解析器错误。由于解析器错误,没有数据被解析。修复您的数据。

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

    来自@squint

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

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

    【讨论】:

    • 这不是他要问的。他问的是如何在 JSON 无效时首先获取数据。
    • 我把答案留给那些想要代表的人。
    • @squint ??当您的输入有价值时,您应该添加答案,在这种情况下肯定是。谁在乎声誉?
    • 谢谢,但我相信你能应付得来。当我回答时,我将其设置为 CW,因此您还不如照顾它,因为您已经获得了选票。
    【解决方案2】:

    您可以将 jQuery ajax 调用中的成功/错误方法视为信使 - 从某种意义上说是您的信使。

    如果调用成功方法,服务器会为您提供良好的数据,您可以在随后的函数中处理这些数据。如果错误方法被调用,服务器给你错误的数据。您仍然可以在错误方法中处理数据,但问题是它是坏数据(如果您愿意,可以将其视为不可靠的)。如果数据不可靠,那么尝试通过调整来修改代码中的错误数据是一种糟糕的编程技术。

    作为一个程序员,你总是想追求好的数据——所以这里的重点是从远程服务器获取好的数据,这样才会调用成功方法,而不是错误。这有意义吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-05
      • 2010-11-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多