0

ページがajaxを使用して送信された場合にのみ、特定のjavascript関数を実行する必要があります。私は次のことを試しました:

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

ただし、通常のポストバックでも実行されるようです。Pageまた、オブジェクトをコントロールに置き換えてみましたUpdatePanelが、違いはありません。

javascript関数内で、MyFunction()それがajaxであるか通常の送信であるかを検出することはおそらく可能ですか?

4

2 に答える 2

1

Sys.WebForm.PageRequestManagerの2つのイベントを利用できます

1)add_initializeRequest->ajaxポストバックが開始されたとき

2)add_endRequest->ajaxポストバックが終了したとき。

PageRequestManagerは、ページがまだ既存のajaxポストバックの処理中であるかどうかを通知する関数「get_isInAsyncPostBack()」も提供します。

例:

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
 });

ご不明な点がございましたら、お気軽にお問い合わせください

于 2012-08-28T13:15:46.673 に答える
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;
}
于 2012-08-28T14:28:11.890 に答える