Ajax调用承诺没有得到解决

时间:2017-01-23 10:02:03

标签: javascript jquery json ajax debugging

我正在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块。为什么会这样,我该如何解决呢?

3 个答案:

答案 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
    })

在错误内部,您可以解决承诺。希望它有所帮助。