为什么 AJAX 完成和错误回调都触发了
Why are AJAX complete and error callbacks both firing?
这是一个带有匿名回调的简单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/
编辑我尝试使用承诺,现在我只得到错误。我的"简单"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);
});
https://jsfiddle.net/abalter/bjwc1dx1/
来自 jQuery 的 ajax() 文档:
完成
请求完成时要调用的函数(成功和 执行错误回调)
现在,对于现代版本的jQuery,侦听成功和错误的首选方法是使用promise接口。
$.ajax(...)
.done( function() {}) //success
.fail( function() {}) //error
.always( function() {}); //complete
完成并不等同于成功。无论状态如何,当响应返回时都会触发。
更新以回答您的第二个问题:
你在第二个小提琴的第一部分收到错误的原因是它期待javascript,并且你给出的文本不是有效的javascript。
如果您将其发送到您的格式有效的端点,或者将您的 hello world 放在引号中(使其有效 javascript),它将起作用。
配置 AJAX 请求时,可以设置多个选项,其中包括定义 beforeSend、成功、错误和完成事件的回调。如果选中此 http://api.jquery.com/jquery.ajax/您将看到为成功和错误事件调用了完整的回调。干杯
相关文章:
- Node.js正确的回调错误句柄
- jQuery fadeOut回调错误
- jQuery动画函数回调错误
- Ajax 调用弹簧控制器回调错误函数
- 节点.js导出类型的回调错误未定义
- Node.js回调错误和结果澄清
- LearnYouNode:回调错误保持为True
- jsonp回调错误
- 解析AJAX请求上的jQuery回调错误
- Angular 2 JSONP注入脚本没有调用回调错误
- Webpack多配置回调错误和统计
- Angular 2 AoT编译器动画回调错误
- $resource回调(错误和成功)
- 如果回调错误,不要执行以下代码
- 使用reactjs启动node应用时webpack回调错误
- JavaScript回调错误处理
- Ajax调用中的回调错误
- JavaScript异步回调错误处理
- "fs:缺少回调错误:EACCES“;当运行deployd应用程序时
- Dart JSONP回调错误