2009-09-28 58 views
1

我只为某些用户收到一些js错误,并且每隔一段时间在一个使用相当多ASP.NET AJAX的页面上。应该在重页中避免ASP.NET AJAX?

该页面还会执行一些激烈的SQL查询和某些字符串操作以突出显示搜索结果中找到的文本。

难道这是性能的结果吗?在要求苛刻的情况下使用ASP.NET AJAX总是安全的,还是应该关注其他AJAX技术?

(通过我有时看到错误的方式):

消息:Sys.WebForms.PageRequestManagerServerErrorException:处理服务器上的请求时出现未知错误。从服务器返回的状态代码为:12031

消息:Sys.WebForms.PageRequestManagerParserErrorException:无法解析从服务器收到的消息。此错误的常见原因是,通过调用Response.Write(),响应筛选器,HttpModules或服务器跟踪已启用来修改响应时。 详细信息:解析“'附近的错误。

回答

1

已经知道ASP.NET AJAX不是性能最密集的方法,但这就是你所得到的结果,我想用它来交换实现的简单性。

我知道你不允许在更新面板中做任何Response.Writes。这会导致你的第二个错误。

+0

Yeap:Response.Write()和document.write一样,它会清除整个页面并启动新文档。 – Tarik 2009-09-29 16:52:45

1

这种特殊的例外是非常常见 并且可以由以下的任何 之一引起:

1.呼叫至回复于(): 通过调用回复于()直接您正绕过ASP.NET 控件的正常 呈现机制。你写的位直接去 没有 进一步处理(呃,主要是...)。 这意味着UpdatePanel不能以 对数据进行特殊格式的编码。

2.响应滤波器: 类似的Response.Write(),响应滤波器可以以这样的方式使 的UpdatePanel不会知道改变 渲染。

3. HttpModules: 同样,与Response.Write()和响应过滤器相同。

4.服务器启用跟踪: 如果我打算再次实施跟踪,我会做不同的看法。 跟踪使用 Response.Write()有效写出,因此我们使用 UpdatePanel的特殊格式 。

5.呼吁对Server.Transfer的(): 不幸的是,没有办法检测到Server.Transfer的()是 调用。这意味着当有人呼叫Server.Transfer()时,UpdatePanel 不能做任何智能事情。发送回客户端的 响应是 从您转移到的页面的HTML标记。由于其HTML和 不是特殊格式,因此不能被解析为 ,并且出现错误。

完成POST:ASP.NET AJAX and Sys.Webforms.PageRequestManagerServerErrorException

你可以抓住它通过使用Visual Studio调试功能会导致错误的代码。我不太了解,但也许可以提供帮助,Firebug也可以帮助您查看提交给服务器的服务器响应和数据。

这里是一个视频,你可以看到如何使用Firebug来调试Ajax。 See how I used Firebug to learn jQuery

但我不认为应该在重载页面中避免Asp.NET Ajax。那实际上Ajax代表的是什么?我的意思是它也可以让服务器发送小块页面,而不是再次请求整个页面。