这是一个带有匿名回调的简单的AJAX请求。 complete
和error
都在触发。为什么呢?
$.ajax({
url:'/echo/js/?js=hello%20world!',
complete: function (response) {
console.log("In anonymous success callback");
console.log("response text: " + response.responseText);
console.log("response object:");
console.log(response);
},
error: function (error) {
console.log("In anonymous error callback");
console.log("error object:");
console.log(error);
}
});
https://jsfiddle.net/abalter/tz0tu04y/
修改 我尝试过使用promises,现在我只得到错误。我的"污垢简单"有些东西一定是错的。 AJAX。
$.ajax({
url: '/echo/js/?js=hello%20world!',
type: 'POST',
})
.done(function(response) {
console.log("In anonymous JS success callback");
console.log("response text: " + response.responseText);
console.log("response object:");
console.log(response);
})
.fail(function(error) {
console.log("In anonymous JS error callback");
console.log("error object:");
console.log(error);
})
.always(function(data) {
console.log("JS I will always do this");
console.log(data);
});
答案 0 :(得分:5)
来自jQuery's ajax() documentation:
<强>完整强>
请求完成时要调用的函数(成功后和 错误回调被执行)
现在使用现代版本的jQuery,监听成功和错误的首选方法是使用promise接口。
$.ajax(...)
.done( function() {}) //success
.fail( function() {}) //error
.always( function() {}); //complete
答案 1 :(得分:3)
完成与成功不一样。无论状态如何,它都会在响应响起时触发。
你在第二个小提琴的第一部分得到错误的原因是它期待javascript而你提供的文本不是有效的javascript。
如果您将其发送到您的格式有效的端点,或者将您的hello世界放在引号中(使其成为有效的javascript),它将起作用。
答案 2 :(得分:0)
配置AJAX请求时,您可以设置多个选项,其中包括beforeSend,success,error和complete事件的回调。如果您检查此http://api.jquery.com/jquery.ajax/,您将看到为成功和错误事件调用完整的回调。干杯