您的位置:首页 > 编程语言 > ASP

asp.net + ajax出现数据回传错误的处理

2010-06-28 10:50 459 查看
使用vs 2008中的AJAX Web窗体开发asp.net程序,想做一个关闭窗口的操作,如下:
protected void btnDelete_Click(object sender, EventArgs e)
{
int nID = Convert.ToInt16(Request.QueryString["ID"]);

DeleteWeatherServices(nID);

Response.Write(" <script language=javascript>window.opener=null;self.close(this); </script>");
}
若将若将btnDelete按钮放在UpdatePanel外面的话可以正常关闭窗口。
若将btnDelete按钮放在UpdatePanel里面的话,不能关闭窗口,而且提示错误:
Sys.WebForms.PageRequestManagerParserErrorException:无法分析从服务器收到的消息。之所以出现错误,常见的原因是:在通过调用
Response.Write()修改响应时,将启用响应筛选器、HttpModule或服务器跟踪。
详细信息:分析附件的“ <script language=jav”时出错

解决方法:

ScriptManager.RegisterStartupScript(this.UpdatePanel1,typeof(UpdatePanel),"CloseWindow","<script language=javascript>window.opener=null;self.close(this); </script>",false);

那个参数的True 是自动加上 “<script>” 与 “</script>”这个标记
反之False 是要自己手动去 这个标记

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/zhouruijie2007/archive/2008/10/31/3191306.aspx

==============================================================

相关文章:

添加下面code,即可:

</ContentTemplate>
<Triggers>
<asp:PostBackTrigger ControlID="btnExportWord" />
<asp:PostBackTrigger ControlID="btnExportExcel" />
</Triggers>
</asp:UpdatePanel>

ControlID为提交数据的控件ID

===============================================================

相关文章:

某些控件因位于 UpdatePanel 中,所以它是异步回送的,某些特殊情况下,我们却希望该控件实现整页回送。

<asp:ScriptManager ID="ScriptManager1" runat="server" />
<div>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<Triggers>
<asp:PostBackTrigger ControlID="Button1" />
</Triggers>
<ContentTemplate>
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" />
</ContentTemplate>
</asp:UpdatePanel>
</div>
此时我们再单击 Button1 将出现页面闪烁,说明实现了整页回送。PostBackTrigger 只有一个属性:ControlID。

===============================================================

ScriptManager.RegisterStartupScript(this.Button1, this.GetType(), "alertScript", "window.open('default2.aspx');", true);
其中第一个参数为要注册脚本的控件ID,试了一下,只要是本页面的就行。
第二个参数为注册脚本控件类型,是控件还是this的GetType()都可以,typeOf(string)也没问题.
第三个脚本函数的名字,随便起。
第四个是脚本内容。
第五个是标明是否再添加脚本标签,如果第四个参数里包含了<script></script>标签,此处则为false,否则为true。

================================================================

RegisterStartupScript(key, script)
RegisterClientScriptBlock(key, script)


  这两个方法的作用都是从前台向后台写脚本,且都接受两个字符串作为输入。第二个参数 script 是要插入到页面中的客户端脚本,包括 <script> 的起始标记和终止标记。第一个参数 key 是插入的客户端脚本的唯一标识符。

  这两个方法唯一的不同之处在于从“何处”发送脚本块。RegisterClientScriptBlock() 在 Web 窗体的开始处(紧接着 <form runat="server"> 标识之后)发送脚本块,而 RegisterStartupScript() 在 Web 窗体的结尾处(在 </form> 标识之前)发送脚本块。

RegisterStartupScript() 用于添加要在加载页面后运行的脚本块,通过这种方法添加的脚本块位于 Web 窗体的结尾处,因为必须在脚本运行前定义脚本要修改的 HTML 元素。也就是说,如果您要使用客户端脚本将焦点设置到文本框,必须确保文本框的 HTML 标记位于设置该文本框的焦点的脚本之前。

RegisterClientScriptBlock() 方法用于为响应客户端事件而执行的脚本代码。通过此方法发送的脚本块位于 Web 页面的开始处,因为这种方法不要求将脚本块置于所有 HTML 元素之后,即它一般不使用文档内自定义的控件
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐