2013-03-15 72 views
2

當我創建了一個ajax請求時,我在身體上附加了一個「Loading」類,這樣我就可以顯示一個進度動畫... 由於某些原因,我看不出有什麼提醒?.ajaxStart和.ajaxStop由於某種奇怪的原因而沒有觸發

function setLoadingPanel() 
{ 
    var timer; 
    var body = $("body"); 

    alert("Set AJAX HOOKS..."); 
    $("body").on({ 
     ajaxStart: function() 
     { 
      alert("AJAX START"); 
      //timer = setTimeout(function() { body.addClass("loading"); }, 50) 
     }, 
     ajaxStop: function() 
     { 
      alert("AJAX STOP!!!"); 
      //$(this).removeClass("loading"); 
      //clearTimeout(timer); 
     } 
    }); 
} 

我已經把警報試試看的掛鉤被稱爲但是沒有警報坡平出於某種原因。

下面是一個使用簡單AJAX.ActionLink幫助我的Ajax請求:

@{ 
    var ajaxDialogoptions = new AjaxOptions() 
    { 
     HttpMethod = "GET", 
     InsertionMode = InsertionMode.Replace, 
     UpdateTargetId = "DialogContainer", 
     OnComplete = "OpenDialog('DialogContainer');" 
    }; 
} 
@Ajax.ActionLink(Model.AddNewItemButtonTitle, Model.AddActionName, Model.AddActionController, Model.AddActionRoutValues, ajaxDialogoptions, new { Class = "btn btn-primary anti-align-rtl" }) 

這裏是我的腳本包:

  Bundle bundle = new Bundle("~/Scripts/jsRTL"); 

      bundle.AddFile("~/Scripts/Common/jquery-1.9.1.min.js"); 
      bundle.AddFile("~/Scripts/Common/jquery-ui-1.10.1.custom.min.js"); 
      bundle.AddFile("~/Scripts/Common/jquery.unobtrusive-ajax.min.js"); 
      bundle.AddFile("~/Scripts/Validator/jquery.validate.min.js"); 
      bundle.AddFile("~/Scripts/Validator/jquery.validate.unobtrusive.min.js"); 
      bundle.AddFile("~/Scripts/Globalize/globalize.js"); 
      bundle.AddFile("~/Scripts/Globalize/globalize.culture.en-US.js"); 
      bundle.AddFile("~/Scripts/Globalize/globalize.culture.he.js"); 
      bundle.AddFile("~/Scripts/Globalize/globalize.culture.he-IL.js"); 
      bundle.AddFile("~/Scripts/Bootstrap/bootstrap-rtl.js"); 
      bundle.AddFile("~/Scripts/Common/Common.js"); 

回答

8

嘗試添加ajaxStart-和ajaxStop處理程序來記錄這樣的:

$(document).ajaxStart(function() { 
    alert("AJAX START"); 
    //timer = setTimeout(function() { body.addClass("loading"); }, 50) 
}); 
$(document).ajaxStop(function() { 
    alert("AJAX STOP!!!"); 
    //$(this).removeClass("loading"); 
    //clearTimeout(timer); 
}); 

參見here

在jQuery 1.8的,然而,.ajaxStart()方法只應附在文件上。

4

我注意到你正在使用jQuery 1.9。確保你已經升級了你的jquery.unobtrusive-ajax.min.js,以便它與它兼容,因爲ASP.NET MVC 4附帶的初始版本不是依賴.live()而不再存在。

+0

其實你也是一樣的:) ..它已經過時了@Philipp M對$(document)vs $(「body」)是正確的 – Mortalus 2013-03-15 10:49:09

相關問題