2012-08-28 69 views
0

我只需要在使用ajax提交頁面時才運行特定的javascript函數。 我已經試過如下:檢測ajax提交

ScriptManager.RegisterOnSubmitStatement(Page, Page.GetType(), 
    "scriptName", "MyFunction();"); 

但似乎並在正常後背上-運行。我也嘗試用UpdatePanel控件替換Page對象,但沒有任何區別。

是否有可能在JavaScript函數MyFunction()內檢測它是否是ajax或正常提交?

回答

0

此代碼解決了這個問題。感謝@ user1341446爲我指出了正確的方向。

註冊上提交的JavaScript函數:

ScriptManager.RegisterOnSubmitStatement(Page, Page.GetType(), 
    "scriptName", "MyFunction();"); 

在函數內部檢測是否AJAX提交:

function MyFunction() 
{ 
    var isAjaxSubmit = false; 
    if (typeof (Sys) != "undefined") 
    isAjaxSubmit = 
     Sys.WebForms.PageRequestManager.getInstance()._postBackSettings.async; 
} 
1

可以利用Sys.WebForm.PageRequestManager兩個事件

1)add_initializeRequest - >當一個ajax回傳被啓動

2)add_endRequest - >當一個ajax回傳完成。

PageRequestManager還提供了一個函數「get_isInAsyncPostBack()」,它告訴頁面是否仍在處理現有的ajax回發。

例子:

Sys.WebForms.PageRequestManager.getInstance().add_initializeRequest(function() { 

var prm = Sys.WebForms.PageRequestManager.getInstance(); 

// Only one async request at a time 
if (prm.get_isInAsyncPostBack()) { 
prm.abortPostBack(); 
} 

//Call the function or process you want to perform on ajax request begin 
}); 

Sys.WebForms.PageRequestManager.getInstance().add_endRequest(function() { 
    //Call the fucntion or process you want to perform on ajax request end 
}); 

任何問題,隨時問

+0

感謝您的回答。當我在'MyFunction()'內檢查'Sys.WebForms.PageRequestManager.getInstance()。get_isInAsyncPostBack()'時,它總是返回false。 (即使在AJAX提交) – Magnus