AJAX /回发问题

时间:2012-08-12 22:31:02

标签: c# jquery asp.net ajax

我整个周末一直在为不受欢迎的回发而苦苦挣扎。

我正在处理的弹出窗口有一个按钮,它可以触发一些存储过程,然后关闭弹出窗口。 我想要实现的是当人们在右上角击中X关闭按钮时获得相同的结果。 所以,X button = 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关键或我的控制等关闭事件以及页面上的任何其他控件时,我怎么能告诉页面区别?”我将不胜感激。

感谢。

修改即可。这不是关于序列化表单和离开之前的比较。不,这是关于登录和东西,所以即使人们打开弹出并立即关闭它我也需要得到它。

2 个答案:

答案 0 :(得分: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);
    }
   });   
});
});

答案 1 :(得分:0)

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

<强>答案: 所有这一切都在我的webform中开始乱七八糟的是一个按钮(一个asp)。这是postbacking,所以我通过javascript禁用了回发,就是这样。我现在能够继续前进。