$ .ajax =>失败触发而不是完成

时间:2017-10-26 07:02:20

标签: javascript jquery ajax

我有一个成功运行的ajax调用,但没有触发我的.done承诺。 相反,它一直在调用.fail

$.ajax({
        url: BASE_URL+"/"+usernameTemp+"/"+pass,
        type: "GET",
        dataType: "json"
})
.done( (res) => {
    console.log(res);
}).fail ( (err) => {
    console.log('err'+JSON.stringify(err));
});

在控制台上,唯一显示的是:

err{"readyState":4,"responseText":"{success: true}","status":200,"statusText":"OK"}

success: true是服务器的答案。 为什么不能触发完成的承诺?

1 个答案:

答案 0 :(得分:2)

没有太多关于HTTP请求失败,但是对调用的完整处理,如果响应不符合预期类型,或者无法解析,jQuery可能无法验证响应。你告诉jQuery你的调用应该接收JSON数据。但是你收到了无效的json ......

{success: true} //Wrong
{"success": true} //Good

自己尝试一下,点击下面的代码创建按钮时只需调用JSON.parse及其内容并记录结果。您将看到第一个无法解析。



$('button').on('click', function(e) {
  console.log(JSON.parse($(e.target).html()));
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button>{success: true}</button>

<button>{"success": true}</button>
&#13;
&#13;
&#13;