0

整个周末我都在为不想要的回发而苦苦挣扎。

我正在处理的弹出窗口有一个按钮,它基本上会触发一些存储过程,然后关闭弹出窗口。我想要实现的是当人们点击右上角的 X 关闭按钮时获得相同的结果。所以,X 按钮 = myCloseButton。

为此,我已经这样做了。

阿贾克斯。

$(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

为什么不创建 WebMethod 并直接调用而不是通过 Page_Load() 页面事件调用。

[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

如果有人遇到类似这样的错误:

答: 在我的网络表单中开始出现混乱的只是一个按钮(一个 asp 按钮)。这是回发,所以我通过 javascript 禁用了回发,就是这样。我现在可以继续前进了。

于 2012-08-14T10:03:58.010 回答