我正在javascript代码中对REST API进行AJAX调用。该调用基本上是一个JSON文件。 AJAX调用是这样的:
$.ajax(ajaxObj).then(function(response) {}).catch(function(err) {});
因此,网络监视器显示此调用的状态200,但JSON响应显示以下错误:
SyntaxError:JSON.parse:JSON数据的第x行和第y列的字符串文字中的错误控制字符。
基本上,响应是无效的JSON。使用debugger
我注意到控件永远不会进入then()
块,尽管状态为200,因此控件进入catch块。为什么会这样,我该如何解决呢?
答案 0 :(得分:2)
您的JSON数据似乎格式不正确。检查JSON响应中字符串或其他残障字符中间的cariage返回。
(可能与How to solve JSON.parse: bad control character in string literal, in this code相关)
答案 1 :(得分:1)
假设您期望带有ajaxObj
的JSON字符串,并且错误指出您的JSON语法中有错误,则应检查返回的JSON(如果它已正确解析)。您的服务器可以返回200个代码,但仍然在正文中返回无效的JSON。
不确定,但这可能会有所帮助:粘贴您返回的JSON here。
答案 2 :(得分:0)
假设ajax调用返回无效的JSON,控件将不会进入then()块。要处理错误,您必须使用done()和fail()方法。
$.ajax("url").done(() => {
//success
}).fail(() => {
//error
})
在错误内部,您可以解决承诺。希望它有所帮助。