2014-11-05 144 views
-3

我调用AjaxJSON解析错误:预期 '}'

$.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){ 

} 

怎么样,我可以忽略此语法错误,并继续执行我的,因为我已经收到了响应。

回答

6

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

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

从@squint

Don't request JSON or send JSON response headers and jQuery won't parse it.

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

+0

这不是他要问的。当JSON无效时,他首先询问如何获取数据。 – 2014-11-05 01:24:14

+0

我离开回答那些谁想要代表。 – 2014-11-05 01:25:16

+1

@squint ??当你的输入是有价值的,你应该添加答案,在这种情况下,它肯定是有价值的。谁关心声誉? – Brad 2014-11-05 01:25:40

1

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

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

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