2011-09-29 55 views
0

我有非常简单的代码,我使用jQuery部分回发,我使用ajaxStart/ajaxStop做一些工作。但它不起作用。我只是不明白为什么它不工作。 这里是我的代码jquery ajaxStart/ajaxStop不工作

$("#imgHolder").ajaxStart(function() { 
$('div#content').block({ 
      message: '<table><tr><td><img src="../images/ajax-loader.gif" border="0"/></td><td><h3>Processing...</h3></td></tr><table>', 
     css: { border: '1px solid #a00' } 
     }); 
    $('#imgHolder').empty(); 
    $("#btnPrint").hide(); 
    }); 

    $("#imgHolder").ajaxStop(function() { 
    $("#btnPrint").show(); 
    $('div#content').unblock(); 
}); 



$(document).ready(function() { 
$.ajax({ 
    type: "POST", 
    url: "UPSLabelFormUK.aspx/ProcessInfo", 
    data: JSON.stringify(DTO), 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    success: function (data) { 
    if (data.d[0].Message == "SUCCESS") { 
    //alert(data.d[0].TrackNumber); 
    ///alert(data.d[0].LabelImagePath); 
    var _images = [data.d[0].LabelImagePath]; 
    $.each(_images, function (e) { 
    $(new Image()).load(function() { 
    $('#imgHolder').html("<img src='" + data.d[0].LabelImagePath + "' width='310' height='402' border=0/>"); 
    }).attr('src', this); 
}); 
} 
} , 
    error: function (XMLHttpRequest, textStatus, errorThrown) { 
    alert(textStatus); 
    } 
}); 
}); 

我只是不不明白,为什么我上面的ajaxstart/ajaxstop没有工作。请帮我理解我的代码中为什么出错。

但我ajaxstart/ajaxstop开始工作时,我改变代码有点像

 $(document).ajaxStart(function() { 
      $('div#content').block({ 
       message: '<table><tr><td><img src="../images/ajax-loader.gif" border="0"/></td><td><h3>Processing...</h3></td></tr><table>', 
       css: { border: '1px solid #a00' } 
      }); 

      $('#imgHolder').empty(); 
      $("#btnPrint").hide(); 
     }); 


     $(document).ajaxStop(function() { 
      $("#btnPrint").show(); 
      $('div#content').unblock(); 
     }); 

唯一的变化是$(document).ajaxStop(function() { instaed的

$("#imgHolder").ajaxStart(function() { 

所以请解释为什么我上面的ajaxStart/ajaxStop代码不工作。感谢

回答

6

鉴于如果有正在进行中没有其他 Ajax请求ajaxStart只叫,这让是无用的,如果你想用它 为AJAX装载机指标。

具有u试图用(告诉我是工作或没有)

jQuery(document).ajaxStart(function(){ 
alert("it begins"); 
}) 
+1

我们的代码将工作,但是当使用像$代码(“#imgHolder”)ajaxStart(函数(){我指的是格绑定则无法正常工作。 .plzz解释了为什么? –

6

在jQuery 1.8中,.ajaxStop()方法只应附于文件。

来自jquery api“ajaxStop”的网页。你可以检查它here

0

试试这个:

$("#loading").bind({ 
    ajaxStart: function() { $(this).show(); }, 
    ajaxStop: function() { $(this).hide(); } 
}); 

您loadingAnimationElement本质结合全局解雇ajaxStart和ajaxStop事件。只有当你打算出现时才显示。

当jQuery没有执行任何Ajax请求并启动一个新的请求时,它触发一个ajaxStart事件。如果其他请求在第一个请求结束之前开始,那么这些新请求不会导致新的ajaxStart事件。当最后一个挂起的Ajax请求完成并且jQuery不再执行任何网络活动时,触发ajaxStop事件。

+0

虽然这个答案可能是正确和有用的,但如果你在解释问题时加入一些解释来解释它是如何帮助解决问题的话,那么这将是首选。这在未来变得特别有用,如果有变化可能无关),导致它停止工作,用户需要了解它曾经如何工作。 –

0

试试这个示例代码: -

var $loading = $('#div_Loader').hide(); 
    $(document).ajaxStart(function() { 

        $loading.show(); 
       }) 
      .ajaxStop(function() { 
       setTimeout(function() { 

        $loading.hide(); 
       }, 1000);     

    });