0

私は週末中ずっと、望まないポストバックで苦労してきました。

私が作業しているポップアップには、基本的にいくつかのストアドプロシージャを起動して、ポップアップウィンドウを閉じるボタンがあります。私が達成したかったのは、人々が右上のXクロージングボタンを押したときに同じ結果が得られるようにすることです。したがって、Xボタン=myCloseButton。

そのために私はこれをしました。

AJAX。

$(window).unload(function(){
var dataToSend = { MethodName: 'UpdateR' };
var options =
    {
        data: dataToSend,
        dataType: 'JSON',
        type: 'POST',
    };
$.ajax(options);
});

.ASPX.CS

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {   #region Ajax methods
              if (Request.Form["MethodName"] == "UpdateR")
              {
                  UpdateRegister();
                  return;
              }
        #endregion
    }
}

そして、UpdateRegister()人々がページを離れたら実行したいコードを実行します。

したがって、問題は、ポップアップページ内の別の(何でも)コントロールをヒットしたときに発生します。ページは(!IsPostBack)とAJAXメソッドに入ります。私がこれとあれをすることについて言っているので、それは理解でき.unloadます。(試してみまし$(window).bind('beforeunload', function()たが、目的の目的で機能していません)

「Xボタンや自分のコントロール、およびページ上の他のコントロールなどの終了イベントの場合、ページを区別するにはどうすればよいですか?」に関するアイデアはありますか?よろしくお願いします。

ありがとう。

編集します。フォームをシリアル化して、終了する前に比較することではありません。いいえ、それはログインなどに関するものなので、人々がポップアップを開いてすぐに閉じたとしても、私はそれを取得する必要があります。

4

2 に答える 2

1

Page_Load()ページイベントを介して呼び出すのではなく、WebMethodを作成して直接呼び出すのはなぜですか。

[WebMethod]
public static string UpdateRegister()
{
   // your update register script here
}

jqueryからのサンプル呼び出し。誰かがロードまたはアンロードボタンをクリックしたときに、このajaxを呼び出すことができます。

ID「button1」のボタンがクリックされたときにajaxスクリプトを呼び出すことができます。

$(function(){
  $('#button1').click(function() {
    // close window
    window.close();
    // call ajax script to perform server side script

      $.ajax({
      type: "POST",
      url: "Sample.aspx/UpdateRegister",
      data: "{}",
      contentType: "application/json; charset=utf-8",
      dataType: "json",
      success: function (msg) {
      alert(msg.d);
    }
   });   
});
});
于 2012-08-12T22:44:14.760 に答える
0

誰かが次のようなエラーでここに来た場合:

回答: 私のWebフォームで混乱し始めたのは、ボタン(aspボタン)だけでした。ポストバックだったので、JavaScriptでポストバックを無効にしました。これで前に進むことができます。

于 2012-08-14T10:03:58.010 に答える