所以这是我的基本问题。
用户点击保存按钮 使用Ajax通过代码隐藏保存内容 然后打开一个新窗口,加载来自数据库的内容。
我只需要一种方法,在内容保存之前不要打开窗口。现在它立即打开一个新窗口,但内容尚未全部保存。
有什么想法吗?
编辑:
对不起,我想我应该更清楚了。我正在使用asp.net更新面板,我点击的按钮触发更新面板将一些信息保存到数据库,然后我想打开一个“预览”这个新数据的新窗口。所以这就是我所拥有的并且不会破坏,但也不会打开一个新窗口。
protected void lnkPreview_Click(object sender, System.EventArgs e)
{
temp1 control = UpdatePanel1.ContentTemplateContainer.FindControl("template") as temp1;
control.saveContent();
string script = "<script language='javascript'>window.open('/preview.aspx', '_blank');</script>";
this.Page.ClientScript.RegisterClientScriptInclude(this.GetType(),"ClientScriptStuff", script);
}
答案 0 :(得分:4)
您的AJAX调用允许您进行完成回调,该回调将在服务器回复时执行。
您需要在那里拨打window.open
有关详细信息,请向我们展示您的代码。
但是,请注意弹出窗口拦截器。
答案 1 :(得分:3)
我会考虑在用户操作后立即打开一个空白/替代内容窗口,然后在回调完成时设置窗口位置。通过这种方式,您应该对弹出窗口阻止更加免疫。
答案 2 :(得分:2)
在ajax完成后使用回调将db内容加载到MODAL窗口中。
使用带有facebox插件的jQuery的示例:
$("form").submit(function(){
var form = $(this);
$.ajax({
"url" : form.attr("action")||document.location.toString(),
"type" : form.attr("method")||"get",
"data" : form.serialize(),
"success" : function(data){
$.facebox({"ajax" : "popupwindowURL.htm?data="+data});
}
});
return false;
});
我只想注意您应该在上面的代码段中添加错误回调。而且你还应该阻止多个表单提交。
答案 3 :(得分:0)
将window.open()函数设置为AJAX结果的回调函数。
答案 4 :(得分:0)
使用Ajax方法获取保存的响应,并在收到保存确认后触发window.open。
答案 5 :(得分:0)
protected void lnkPreview_Click(object sender, System.EventArgs e)
{
//Save the page content
//Open a page to preview the changes
ScriptManager.RegisterClientScriptBlock(UpdatePanelName, typeof(Page), "previewPage", "window.open('/preview.aspx');", true);
}