小编典典

jquery :: ajaxStop()与jquery :: ajaxComplete()

ajax

在哪个时间使用哪个。

http://api.jquery.com/上的文档中:

对于ajaxStop(),它表示:

描述:注册所有Ajax请求完成后要调用的处理程序。这是一个Ajax事件。

对于ajaxComplete(),它说:

描述:注册一个在Ajax请求完成时要调用的处理程序。这是一个Ajax事件。

从我可以看到,由于以下原因,ajaxComplete()更加灵活:

无论完成了什么Ajax请求,都将调用所有ajaxComplete处理程序。如果必须区分请求,则可以使用传递给处理程序的参数。每次执行ajaxComplete处理程序时,都会将事件对象,XMLHttpRequest对象和用于创建请求的设置对象传递给它。

有人可以解释每个用途是什么,以及每个用途的适当用法。在最近构建的应用程序中,我依靠ajaxStop()在我的ajax调用完成时触发。然后,我将解析返回的数据以获取服务器端操作的结果。现在,我开始怀疑是否应该针对各种情况使用ajaxComplete()或两者结合使用。

思想被赞赏。


阅读 356

收藏
2020-07-26

共1个答案

小编典典

好吧,简短的版本是它们有不同的用途,因此答案将是“针对各种情况两者结合”选项。基本规则是:

  • .ajaxComplete()-为完成的 每个请求 运行,如果您想对每个请求/结果执行某些操作,请使用此命令。请注意,这不会代替success处理程序,因为解析的数据不是参数之一(即使发生错误它也会运行)-您可能希望.ajaxSuccess()在某些按请求的情况下使用。
  • .ajaxStop()-在 每一批请求 完成时运行,通常将其与.ajaxStart()诸如显示/隐藏某种“正在加载…”指示符之类的东西结合使用-或在一批AJAX请求完成后执行其他操作,例如高手的最后一步。

如果您使用它来解析数据,则可能有一种更好的方法,在这种情况下$.ajaxSetup(),您可以指定一个success获取已解析数据的处理程序(例如JSON响应将是对象),如下所示:

$.ajaxSetup({
  success: function(data) { 
    //do something with data, for JSON it's already an object, etc.
  }
});
2020-07-26