【问题标题】:Abort ajax request without affecting the next request中止ajax请求而不影响下一个请求
【发布时间】:2020-05-25 20:54:57
【问题描述】:

我有一个数字输入和“onChange”事件,我在其中触发了这个 ajax 请求(参见代码)。 此中止影响我的下一个请求。 如果我只发送一个请求而不中止,则该请求的速度正常,但如果我中止,例如 3 个请求,则 ajax 看起来像是在一个请求中发送所有中止的请求......

 globalAjaxChange = $.ajax({
    type: 'POST',
    dataType: 'json',
    url: ajaxUrl,
    data: formData,
    processData: false,
    contentType: false,
    beforeSend: function () {
        if (globalAjaxChange != null) {
            globalAjaxChange.abort();
        }
    },
    success: function (data) {
        if (data['ok'] == false) {
            notify(data['msg'], 'error');
        }
    },
    error: function (data) {
        if (data.statusText !== 'abort')
            notify('message', 'error');
    }
});

这是网络检查:

【问题讨论】:

  • 你能分享一下“臃肿”请求的负载吗?
  • 您的代码是在全局范围内还是在函数内部定义?
  • 代码在一个函数中,但是 globalAjaxChange 被声明为全局的。

标签: javascript jquery html ajax xmlhttprequest


【解决方案1】:

尝试在您的 beforeSend 回调中返回 try/false。除非您无论如何都需要发送 ajax 请求,否则 jQuery 将在该函数中返回 false 为您中止请求。有关回调方法的更多信息,请参阅jQuery docs here

您还可能在globalAjaxChange 变量集上遇到逻辑或异步问题。这将导致始终发送 ajax 请求,因为您在检查 globalAjaxChange 时从不返回 null。尝试在它发送和设置的位置周围放置断点,以查看值是什么。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-11
    • 1970-01-01
    • 2020-09-22
    • 2017-12-06
    • 1970-01-01
    相关资源
    最近更新 更多