【问题标题】:Why are AJAX complete and error callbacks both firing?为什么 AJAX 完成和错误回调都会触发?
【发布时间】:2016-04-21 17:25:48
【问题描述】:

这是一个非常简单的带有匿名回调的 AJAX 请求。 completeerror 都在开火。为什么?

$.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/

【问题讨论】:

  • 改用成功和错误回调。
  • RTFM.
  • 好的。我是 RTFM,并按照@escaparello 的建议使用了承诺。仍然出现错误。更新的问题。
  • @abalter 检查我对第二个问题的解决方案的答案

标签: javascript jquery ajax callback anonymous-function


【解决方案1】:

来自jQuery's ajax() documentation

完成

请求完成时调用的函数(成功后 错误回调被执行)

现在对于现代版本的 jQuery,监听成功和错误的首选方法是使用 Promise 接口。

$.ajax(...)
   .done( function() {})     //success
   .fail( function() {})     //error
   .always( function() {});  //complete

【讨论】:

    【解决方案2】:

    完成不等于成功。无论状态如何,它都会在响应返回时触发。

    更新以回答您的第二个问题:

    您在第二个小提琴的第一部分收到错误的原因是它需要 javascript,并且您提供的文本不是有效的 javascript。

    如果您将其发送到您的格式有效的端点,或者将您的 hello world 放在引号中(使其成为有效的 javascript),它将起作用。

    【讨论】:

      【解决方案3】:

      当您配置 AJAX 请求时,您可以设置多个选项,其中您可以定义 beforeSend、success、error 和 complete 事件的回调。如果您检查此http://api.jquery.com/jquery.ajax/,您将看到为成功和错误事件都调用了完整的回调。干杯

      【讨论】:

        猜你喜欢
        • 2013-01-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-18
        • 2023-03-12
        • 2015-11-12
        • 1970-01-01
        相关资源
        最近更新 更多