我整个周末一直在为不受欢迎的回发而苦苦挣扎。
我正在处理的弹出窗口有一个按钮,它可以触发一些存储过程,然后关闭弹出窗口。 我想要实现的是当人们在右上角击中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关键或我的控制等关闭事件以及页面上的任何其他控件时,我怎么能告诉页面区别?”我将不胜感激。
感谢。
修改即可。这不是关于序列化表单和离开之前的比较。不,这是关于登录和东西,所以即使人们打开弹出并立即关闭它我也需要得到它。
答案 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禁用了回发,就是这样。我现在能够继续前进。