Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery ajaxStart未被触发_Jquery_Ajax - Fatal编程技术网

Jquery ajaxStart未被触发

Jquery ajaxStart未被触发,jquery,ajax,Jquery,Ajax,此代码 $("#loading").ajaxStart(function() { alert("start"); $(this).show(); }); 在我的加价中 <div style="text-align:center;"><img id="loading" src="../images/common/loading.gif" alt="" /></div> 即使gif显示为旋转,也不要触发警报“开始”。Aj

此代码

$("#loading").ajaxStart(function() {
        alert("start");
        $(this).show();
    });
在我的加价中

<div style="text-align:center;"><img id="loading" src="../images/common/loading.gif" alt="" /></div>
即使gif显示为旋转,也不要触发警报“开始”。AjaxStop按预期触发。
知道为什么吗?

我不确定这是否能解决您的问题,但通常我会将
debug.info(“您的消息”)
与Firebug控制台结合使用,而不是
alert()
,因为alert会中断您的脚本处理,直到您关闭它,而debug.info则相当低调


您可以在此处下载的实现。

它不会被触发,因为您的处理程序在ajax请求已经发出(超过调用它的时间)之后才注册。请求也在请求完成之后注册,但在请求完成之前注册,因此当请求返回时,它会连接起来运行

要解决此问题,请在第一次呼叫之前移动此


更新:启动jQuery 1.9时,AJAX事件应仅附加到文档。


启动jQuery 1.9时,AJAX事件应仅附加到文档。

请参阅迁移指南

从jQuery 1.9开始,全局AJAX事件(ajaxStart、ajaxStop、ajaxSend、ajaxComplete、ajaxError和ajaxSuccess)仅在文档元素上触发。更改程序以侦听文档上的AJAX事件。例如,如果代码当前如下所示:

$("#status").ajaxStart(function() { 
   $(this).text("Ajax started"); 
});
将其更改为:

$(document).ajaxStart(function() {
   $("#status").text("Ajax started");
});

你所说的“即使gif显示为旋转”是什么意思?我在你的问题中没有看到任何带有gif的标记或JS。您是否使用注册了ajaxStart()处理程序的同一个jQuery实例调用ajax调用?在我的标记中向右滚动,您将看到那里的gif。我从未听说过debug.info(),它是否适用于IE?我正在与IEI合作,我在答案中添加了指向库的链接。不幸的是,它看起来在IE中不起作用,但我强烈推荐Firefox+Firebug进行调试。它可以解决问题,但当我们进行多个ajax调用时,这个解决方案就是一个问题,因为只有相同的加载图像可能会显示在错误的位置。假设发生了多个调用,那么如何针对发起调用的特定调用加载映像
$(document).ajaxStart(function() {
  $("#loading").show();
});

$(document).ajaxStop(function() {
  $("#loading").hide();
  $("#st-tree-container").show();
});
$("#status").ajaxStart(function() { 
   $(this).text("Ajax started"); 
});
$(document).ajaxStart(function() {
   $("#status").text("Ajax started");
});