2011-09-29 70 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);     

    });