【问题标题】:jQuery Ajax does NOT continue onto any of the callbacks .done, .fail, .always - Why?jQuery Ajax 不会继续处理任何回调 .done、.fail、.always - 为什么?
【发布时间】:2020-04-18 07:24:57
【问题描述】:

我故意放置一个不存在的虚假 URL 的基本示例。

$.ajax({
    url     : 'https://google.com/404', 
    dataType: 'html', 
    cache   : false, 
    done : function(data, textStatus, jqXHR) { 
        console.log('data:',data);
        console.log('textStatus:', textStatus);
        console.log('jqXHR:', jqXHR);
    },
    fail: function(jqXHR, textStatus, errorThrown) {
        console.error('jqXhr:',jqXHR);
        console.error('textStatus:', textStatus);
        console.error('errorThrown:', errorThrown);
    },
    always: function( data_jqXHR, textStatus, jqXHR_errorThrown ) { 
        console.warn('data_jqXHR:',data_jqXHR);
        console.warn('textStatus:', textStatus);
        console.warn('jqXHR_errorThrown:', jqXHR_errorThrown);
    }
}); //end-ajax

我原以为它会采用 .fail 路径,然后是 .always 路径,但两者都没有,除了显示错误的控制台:

获取'https://google.com/404'404

如何让 jQuery 或 javascript 抛出 404 ?例如alert('404 错误')

【问题讨论】:

    标签: jquery ajax http-status-code-404


    【解决方案1】:

    你需要使用the right syntax

    $.ajax({
        url: 'https://google.com/404',
        dataType: 'html',
        cache: false,
      })
      .done(function() {
        alert("done");
      })
      .fail(function() {
        alert("failed");
      })
      .always(function() {
        alert("always");
      });
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

    【讨论】:

    • 我使用带有 .success、error、complete 的旧语法,但将其替换为等效的语法,但显然这是不可能的。顺便说一句,您的现代语法确实拒绝进入 fail() 和 always() 但是在相应的回调中找不到错误是 404 的事实。
    猜你喜欢
    • 2016-06-07
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 2017-09-10
    • 2012-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多