框架中怎样使用ajax response.write

geweb 2010-09-01 11:55:11
 string scriptstring = "<script language=javascript>";
scriptstring += "self.frames['rightFrame'].search('" + dx + "','" + dy + "');";
scriptstring += "</script>";
Response.Write(scriptstring);

执行后的异常:
Microsoft JScript 运行时错误: Sys.WebForms.PageRequestManagerParserErrorException: 无法分析从服务器收到的消息。之所以出现此错误,常见的原因是: 在通过调用 Response.Write() 修改响应时,将启用响应筛选器、HttpModule 或服务器跟踪。
详细信息: 分析附近的“<script language=jav”时出错。
  ScriptManager.RegisterStartupScript(this.Page, typeof(System.Web.UI.Page), "aaa", scriptstring, false);

执行后的异常:
Microsoft JScript 运行时错误: Sys.WebForms.PageRequestManagerServerErrorException: 为类型“System.Web.UI.Page”和键“aaa”注册的脚本标记包含不在脚本标记范围内的无效字符: <script language=javascript>self.frames['rightFrame'].searchshowsta('118.113538','24.524079','华荣充电站','厦门','0592-3117316','湖里区华荣路','2台直流中型充电机、2台交流充电桩','Images/EV_Station/XMHR.jpg');</script>。只能注册格式设置正确的脚本标记。

框架为页面嵌套一个主框架,主框架为左右2个框架组成
...全文
427 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
geweb 2010-09-01
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 hanyise520 的回复:]
C# code

string scriptstring = "window.parent.frames['rightFrame'].search('" + dx + "','" + dy + "');";
ScriptManager.RegisterStartupScript(Updatepanel1, this.GetType(), "aaa", scriptstring, true)……
[/Quote]
这个也测试过了
geweb 2010-09-01
  • 打赏
  • 举报
回复
已测试过的方法
    //  Response.Write(scriptstring);
ScriptManager.RegisterStartupScript(this.Page, typeof(System.Web.UI.Page), "aaa", scriptstring, false);
// ScriptManager.RegisterStartupScript(ImageButton1, typeof(UpdatePanel), "aaa", scriptstring, false);
// scriptstring="alert('你好!')";
ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "message",scriptstring , true);
//ClientScriptManager csm = Page.ClientScript;
//csm.RegisterClientScriptBlock(this.GetType(), "aaa", scriptstring, false);

应该不是这部分问题 ,左框架页面时也可以刷新,但同时右框架里面的JS方法不能执行
hanyise520 2010-09-01
  • 打赏
  • 举报
回复

string scriptstring = "window.parent.frames['rightFrame'].search('" + dx + "','" + dy + "');";
ScriptManager.RegisterStartupScript(Updatepanel1, this.GetType(), "aaa", scriptstring, true);


这样写也错?
geweb 2010-09-01
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 hanyise520 的回复:]
方法 是 searchshowsta 还是 search?
[/Quote]
都有,方法都是一样
geweb 2010-09-01
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 chen_ya_ping 的回复:]
能换个AJAX框架来实现吧,Jquery就不错。
[/Quote]
Jquery没用过,明天就要上线了。。。。开始没用AJAX,没有异常,今天突然要求要用。。。
hanyise520 2010-09-01
  • 打赏
  • 举报
回复
方法 是 searchshowsta 还是 search?
geweb 2010-09-01
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 peter200694013 的回复:]
注册的脚本标记包含不在脚本标记范围内的无效字符

是不是含有特殊字符了?
[/Quote]
什么特殊字符“ <script language=javascript>window.parent.frames['rightFrame'].search('118.113538','24.524079');</script>。”
hanyise520 2010-09-01
  • 打赏
  • 举报
回复

string scriptstring = "window.parent.frames['rightFrame'].search('" + dx + "','" + dy + "');";
ScriptManager.RegisterStartupScript(Updatepanel1, this.GetType(), "aaa", scriptstring, true);


ScriptManager.RegisterStartupScript 第一个参数 是 updatepanel 控件 ID
最后一个参数 true 表示 脚本不用加 “<script> </script>”
porschev 2010-09-01
  • 打赏
  • 举报
回复
好久没用过自带的AJAX了。。
chen_ya_ping 2010-09-01
  • 打赏
  • 举报
回复
能换个AJAX框架来实现吧,Jquery就不错。
geweb 2010-09-01
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 q107770540 的回复:]
C# code

string scriptstring = "window.parent.frames['rightFrame'].search('" + dx + "','" + dy + "');";
ScriptManager.RegisterStartupScript(this, this.GetType(), "", scriptstring, true); ……
[/Quote]
Microsoft JScript 运行时错误: Sys.WebForms.PageRequestManagerServerErrorException: 为类型“ASP.left_aspx”和键“message”注册的脚本标记包含不在脚本标记范围内的无效字符: <script language=javascript>window.parent.frames['rightFrame'].search('118.113538','24.524079');</script>。只能注册格式设置正确的脚本标记。

同样的问题
window.parent.frames 和self没区别的
Peter200694013 2010-09-01
  • 打赏
  • 举报
回复
注册的脚本标记包含不在脚本标记范围内的无效字符

是不是含有特殊字符了?
q107770540 2010-09-01
  • 打赏
  • 举报
回复

string scriptstring = "window.parent.frames['rightFrame'].search('" + dx + "','" + dy + "');";
ScriptManager.RegisterStartupScript(this, this.GetType(), "", scriptstring, true);
龍月 2010-09-01
  • 打赏
  • 举报
回复
顶下吧
你用的 scriptmanager??
youth 2010-09-01
  • 打赏
  • 举报
回复
别沉了,帮顶下
LBreathy 2010-09-01
  • 打赏
  • 举报
回复
Sys.WebForms.PageRequestManagerParserErrorException:
在使用UpdatePanel的时候,如果要用到Response.Write()方法,则会出错,错误信息内容大概如下:
Sys.WebForms.PageRequestManagerParserErrorException: The message received from the server could not be parsed. Common causes for this error are when the response is modified by calls to Response.Write(), response filters, HttpModules, or server trace is enabled. Details: Error parsing near ' 你要输出的内容|UpdatePanel|U'





中文:

Sys.WebForms.PageRequestManagerParserErrorException:

无法分析从服务器收到的消息,之所以出现此错误,常见的原因是:通过调用Response.Write()修改相应时,将启用响应筛选器、HttpModules或服务器追踪。

详细信息:分析附近的“输出内容”时出错。



解决方法如下:

1.如果调用Response.Write()方法的服务器控件在使用UpdatePanel的页面,则只需要在UpdatePanel下增加一个<Triggers>节点,通过PostBackTrigger注册一下改控件就可以了。代码如下:

1. <asp:ScriptManager ID="ScriptManager1" runat="server">
2. </asp:ScriptManager>
3. <asp:UpdatePanel ID="UpdatePanel1" runat="server">
4. <Triggers>
5. <asp:PostBackTrigger ControlID="Button2" /> <!--Button2就是下面那个需要在Button2_Click事件里使用Response.Write()的按钮ID-->
6. </Triggers>
7. <ContentTemplate>
8. <asp:Button ID="Button2" runat="server" OnClick="Button2_Click" Text="Button" />
9. <asp:UpdateProgress ID="UpdateProgress1" runat="server">
10. <ProgressTemplate></ProgressTemplate>
11. </asp:UpdateProgress>
12. </ContentTemplate>
13. </asp:UpdatePanel>

2.但是,如果是在母版页中使用UpdatePanel,则不能通过以上方法来解决,否则或出现类似以下错误:

A control with ID 'btnExport' could not be found for the trigger in UpdatePanel 'UpdatePanel1'.

这主要是UpdatePanel1找不到<asp:PostBackTrigger ControlID="btnExport" />中注册的控件,因为,我们一般没有在母版页中添加这个控件(btnExport)。(当然,如果在UpdatePanel的<ContentTemplate> 节点下添加了ID为btnExport的控件,则不会出错。)

如果出现这样的错误该怎么办呢,我的解决方法是在需要用到Response.Write()方法的控件所在页码的Page_Load事件中添加如下代码:
((ScriptManager)Master.FindControl("ScriptManager1")).RegisterPostBackControl(btnExport);
//ScriptManager1是<asp:ScriptManager ID="ScriptManager1" runat="server"> </asp:ScriptManager>的ID




类似的错误,希望对楼主有帮助!

geweb 2010-09-01
  • 打赏
  • 举报
回复
快下班了,中间顶一下
geweb 2010-09-01
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 wuyq11 的回复:]
Response.write引起的
search?
ScriptManager.RegisterStartupScript(Updatepanel1, this.GetType(), "", scriptstring, true);
[/Quote]
是要执行右框架中的search方法,这样是不行的
geweb 2010-09-01
  • 打赏
  • 举报
回复
谢谢上面的coder的帮忙
[Quote=引用 16 楼 yanimaziba 的回复:]
你又用到iframe 又用到AJAX iframe 本身就能做到局部不刷新了

typeof(System.Web.UI.Page)与 this.getType() 是不一样的 。一个是当前页的,一个是iframe也页的了
[/Quote]
用什么不是我说了算。。。开始说只要做个样式,现在又要求功能必须实现。这个只是其中一部分,这个页面就是用户控件加个框架,然后框架里面分左右框架,左边是ASPX页面,右边是HTML,左右还要互相调用。
 ScriptManager.RegisterStartupScript(ImageButton1, typeof(UpdatePanel), "aaa", scriptstring, false);
scriptstring="alert('你好!')";

这个的方法是可以执行的,但右框架中的JS就没必须调用。。。问题应该出在这里吧,继续等高手解答
wuyq11 2010-09-01
  • 打赏
  • 举报
回复
Response.write引起的
search?
ScriptManager.RegisterStartupScript(Updatepanel1, this.GetType(), "", scriptstring, true);
加载更多回复(1)

110,561

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧