Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 更新面板异步回发触发器在IE中不工作_Javascript_Asp.net_Windows_Internet Explorer_Updatepanel - Fatal编程技术网

Javascript 更新面板异步回发触发器在IE中不工作

Javascript 更新面板异步回发触发器在IE中不工作,javascript,asp.net,windows,internet-explorer,updatepanel,Javascript,Asp.net,Windows,Internet Explorer,Updatepanel,在我的应用程序中,更新面板的AsyncPostback触发器在IE 9和IE 10中不工作,但在IE 8中工作,并且postbacktrigger也在所有IE版本中工作 这是一个错误 Sys.WebForms.PageRequestManagerParserErrorException:消息 无法分析从服务器接收的数据 在发布此问题之前,我尝试了以下几点: 页面标记中的async=true 在页面加载时注册回发(这不能使用,因为整个系统都在使用更新面板) 在web配置中允许异步 请告诉

在我的应用程序中,更新面板的AsyncPostback触发器IE 9和IE 10中不工作,但在IE 8中工作,并且postbacktrigger也在所有IE版本中工作

这是一个错误

Sys.WebForms.PageRequestManagerParserErrorException:消息 无法分析从服务器接收的数据

在发布此问题之前,我尝试了以下几点:

  • 页面标记中的async=true
  • 在页面加载时注册回发(这不能使用,因为整个系统都在使用更新面板)
  • 在web配置中允许异步


请告诉我解决办法

我还发现此错误仅出现在Winodws 8系统中

<asp:UpdatePanel ID="MainContainerUpdatePanel" ChildrenAsTriggers="false" UpdateMode="Conditional" runat="server">

检查您的浏览器定义文件是否已在服务器上更新,存在许多与javascript回发处理相关的问题,这些问题是由.Net错误检测IE的新版本引起的。 有许多修补程序可以更新这些文件,有关更多详细信息,请参阅Scott Hanselmann的博客:


如果你有多个更新面板,它会工作吗?让我们知道

我也面临同样的问题。我分析了原因,找到了很多关于问题原因和解决方法的好帖子。其中一个位于:

为什么我总是收到PageRequestManagerParserErrorException?

好吧,你很可能正在做一件书中提到的事情 错误消息。以下是最常见的原因,以及为什么他们不这样做 工作:

1.调用Response.Write()

通过直接调用
Response.Write()
,您绕过了正常的 ASP.NET控件的呈现机制。你写的东西都快用完了 直接交给客户,无需进一步处理(嗯, 主要是。这意味着
UpdatePanel
无法在其 特殊格式

2.响应过滤器:

Response.Write()类似,响应筛选器可以更改
以
UpdatePanel
不知道的方式进行渲染

3.HttpModules:同样,处理方法与
Response.Write()
和响应过滤器相同

4.服务器跟踪已启用:如果我要再次实施跟踪,我会采取不同的做法<代码>跟踪
是使用
Response.Write()
,这样就弄乱了我们需要的特殊格式 用于
UpdatePanel

5。调用Server.Transfer():不幸的是,无法检测是否调用了
Server.Transfer()
。这意味着
UpdatePanel
无法在有人呼叫时执行任何智能操作
Server.Transfer()
。发送回客户端的响应是HTML 从您传输到的页面中删除标记。因为它是HTML而不是 特殊格式,无法解析,您会得到错误。怎么办 我避免获得
PageRequestManagerParserErrorException

首先,不要执行上面列表中的任何操作!以下是如何避免给定错误的匹配列表(如果可能):

调用Response.Write():在页面上放置
或类似控件,并设置其文本属性。额外的好处是 您的页面将是有效的HTML。使用
Response.Write()时
通常以包含无效标记的页面结束

响应过滤器:修复方法可能只是不使用过滤器。反正也不常用。如果可能的话,在 控制级别,而不是响应级别

HttpModules:与响应过滤器相同

已启用服务器跟踪:使用其他形式的跟踪,例如写入日志文件、Windows事件日志或自定义机制

调用Server.Transfer():我不太清楚人们为什么使用
Server.Transfer()
。也许这是经典的遗产 ASP。我建议对查询字符串使用
Response.Redirect()
参数或跨页过帐

另一种避免解析错误的方法是执行常规回发,而不是执行
异步回发。例如,如果您有
按钮,它绝对必须执行一个
Server.Transfer()
,让它执行 定期回发。有多种方法可以做到这一点:

  • 最简单的方法是将按钮放在任何
    UpdatePanels
    之外。不幸的是,页面的布局可能不允许 为了这个
  • 在指向按钮的
    UpdatePanel
    中添加一个
    PostBackTrigger
    。如果按钮是静态声明的,这将非常有效 通过页面上的标记
  • 调用
    ScriptManager.RegisterPostBackControl()
    并传入有问题的按钮。这是适用于以下控件的最佳解决方案: 动态添加,例如在重复模板中添加

我认为您使用的是.net framework 4.0,windows 8的framework 4.0中存在一些问题,如果可能,您可以尝试在framework 4.5中转换您的应用程序。

您可以发布您的代码示例吗?@SpiderCode我已经添加了代码ddl_程序在哪里?它是在更新面板外的下拉菜单吗?它在更新面板外是
<asp:UpdatePanel ID="MainContainerUpdatePanel" ChildrenAsTriggers="false" UpdateMode="Conditional" runat="server">
protected void Page_Load(object sender, EventArgs e) {
  ScriptManager scriptManager = ScriptManager.GetCurrent(this.Page);
  scriptManager.RegisterPostBackControl(btn.Your-BUTTON-HERE');
  //Further code goes here....
}