Javascript JS/JQuery分支预测

Javascript JS/JQuery分支预测,javascript,jquery,Javascript,Jquery,当服务器返回429“太多请求”状态时,将弹出警报,但页面将更改为/ProjectCanvas。“OK”永远不会被打印出来 $.post("/createProject/", null, ).fail(function() { alert("You are doing that too much. Please wait before trying again."); }).done(function(data, status) { console.log("OK") wi

当服务器返回429“太多请求”状态时,将弹出警报,但页面将更改为/ProjectCanvas。“OK”永远不会被打印出来

$.post("/createProject/", null, ).fail(function() {
    alert("You are doing that too much. Please wait before trying again.");
}).done(function(data, status) {
    console.log("OK")
    window.location.href = "/ProjectCanvas/";
})
我认为浏览器错误地预测了一个成功的响应,并在意识到它不应该被执行之前开始执行它


这种情况发生在chrome和edge上,到目前为止,safari工作正常。有人知道这里有什么问题吗?

jQuery post方法中的参数是回调函数

$.post(“/createProject/”,函数(){
var defer=$.Deferred();
如果(状态==“成功”){
延迟承诺(数据);
}
})
.完成(功能(数据){
console.log(“确定”)
window.location.href=“/ProjectCanvas/”;
})
.fail(函数(){
提醒(“您做得太多了。请稍候,然后再试。”);

})
您正在使用哪个版本的jQuery?您正在使用.done方法,这意味着您的jQuery版本应该>1.8。请检查是否成功返回空正文?我使用的是jQuery 3.3.1。成功后,服务器返回一个时间戳,例如20180919-213257。我认为您弄错了。更有可能的情况是,正在发生的其他请求之一已成功并导致重定向,或者重定向完全是由其他一些操作引起的,例如锚单击或表单提交。对于ajax请求而言,分支预测并不是一件很重要的事情。是的,但是如果发生错误,window.location.href=“/ProjectCanvas/”永远不应该执行。确定您可以从服务器发布示例响应吗?我想我知道解决方法。
HTTP/1.1429请求太多了
日期:Wed,2018年9月19日19:37:30 GMT
服务器:WSGIServer/0.2 CPython/3.7.0
内容类型:text/html;charset=utf-8
内容长度:78
变化:接受语言,Cookie
内容语言:nl
/createProject/,你做得太多了。请稍候,然后重试。
您不期望JSON响应吗?在响应中,您应该得到错误代码:429?我实际上忽略了响应主体,它不是JSON,只是一个简单的字符串。我想知道服务器是否返回错误。我之前的评论是完整的HTTP响应(格式不好)。