0

使用 Jquery 我需要触发一个 ajaxComplete 事件。

目前我正在使用此代码但没有成功

$.getJSON(assetUrl, function (data) {
...
    $.trigger("ajaxComplete");

有错误:

TypeError: 'undefined' is not a function (evaluating '$.trigger("ajaxComplete")')

知道我做错了什么吗?谢谢

4

3 回答 3

3

ajaxCompleted事件在 DOM 上触发,您需要在 jQuery 包装器元素上调用该trigger方法$(document).trigger(...):例如。

对象上没有静态函数“触发器” jQuery(这就是错误消息告诉您的内容),您可以使用$.event.trigger- 尽管我担心这是内部的。

但是,您不需要手动操作;getJSON 确实触发了事件本身。要中止正在运行的 ajax 请求,请参阅XHR 对象abort的方法。

于 2012-12-17T13:57:11.943 回答
3

您可以定义一个全局 jQuery ajaxComplete(和 ajaxError)函数,该函数将在文档准备就绪时以及在每个完成的 ajax 请求之后运行。您可以像这样在初始页面加载(或任何时候)定义 ajaxComplete 函数:

$(function(){
      $(document).ajaxComplete(function(){

        // on complete code

      }).ajaxError(function(){

        // on error code

      });
});

要随时调用此事件处理程序,只需执行以下命令:

$(document).triggerHandler('ajaxComplete');
于 2018-07-17T17:30:17.163 回答
0

如果其他人在看这个,手动触发 ajaxComplete 的正确方法是$(document).trigger('ajaxComplete', [xhr, settings]);

将 xhr 对象传递给 ajaxComplete 触发事件可能很重要,因为事件处理程序可能需要它。

但是,如果您不是通过 jquery 发出请求,您只需要这个,因为 jquery 会自动为您处理这个。

于 2021-11-03T11:30:04.197 回答