Javascript Ajax调用承诺没有得到解决
我正在javascript代码中对RESTAPI进行AJAX调用。该调用基本上获取一个JSON文件。AJAX调用如下所示:Javascript Ajax调用承诺没有得到解决,javascript,jquery,json,ajax,debugging,Javascript,Jquery,Json,Ajax,Debugging,我正在javascript代码中对RESTAPI进行AJAX调用。该调用基本上获取一个JSON文件。AJAX调用如下所示: $.ajax(ajaxObj).then(function(response) {}).catch(function(err) {}); 因此,网络监视器显示此调用的状态200,但JSON响应显示以下错误: SyntaxError:JSON.parse:JSON数据的第x行和第y列的字符串文字中的错误控制字符 基本上,响应是无效的JSON。使用debugger我注意到,尽
$.ajax(ajaxObj).then(function(response) {}).catch(function(err) {});
因此,网络监视器显示此调用的状态200,但JSON响应显示以下错误:
SyntaxError:JSON.parse:JSON数据的第x行和第y列的字符串文字中的错误控制字符
基本上,响应是无效的JSON。使用
debugger
我注意到,尽管状态为200,但控件从未进入then()
块,因此控件将进入catch块。为什么会这样?我如何解决它?假设您需要一个带有ajaxObj
的JSON字符串,并且错误表明您的JSON语法有错误,您应该检查返回的JSON是否正确解析。您的服务器可以返回200个代码,但仍然返回正文中的无效JSON
不确定,但这可能会有所帮助:粘贴返回的JSON。您的JSON数据似乎格式错误。检查JSON响应中字符串中间是否有cariage返回或其他无效字符
(可能与)假设ajax调用返回无效的JSON,控件将不会进入then()块。要处理错误,必须使用done()和fail()方法
在错误中,您可以解决承诺。希望能有所帮助。您能展示ajax调用的代码吗?ajax调用正在进行中,我的状态为200 OK,并得到响应。所以我猜ajax调用没有什么问题。是的,它返回了一个无效的JSON。因此,ajax承诺没有得到解决,因为JSON响应无效。这是否意味着,除非JSON文件在API中被修改,否则我对此无能为力?如果您没有权限修改API响应,那么答案是否定的。有一种“黑客方法”,但我不推荐它,也不确定它是否真的有效。也就是说,尝试以其他方式捕获响应,并自己解析它。但如前所述,这是一种非常糟糕的做法,除非你真的必须这样做,并且只有在这是一个具体案例的情况下才尝试这样做。
$.ajax("url").done(() => {
//success
}).fail(() => {
//error
})