Ajax post不能与参数中的html结合使用.net 4框架

时间:2010-09-24 15:01:17

标签: javascript asp.net ajax .net-4.0

将我们的项目升级到.net 4.0框架(从3.5开始)之后,我们在参数中遇到了带有html的ajax调用的一些问题。一旦用户在文本区域中输入一些html,就不再执行ajax调用。如果用户只输入纯文本,则没有问题。

   <script language="javascript">
/* Doesn't work */
var html = "<p>test</p>";
var body = "default.aspx?html=" + urlEncode(html);
var des = new AJAXInteraction(url, handleResponse, 'saveloader');
des.doPost(body);

/* Work */
var html = "test";
var body = "default.aspx?html=" + urlEncode(html);
var des = new AJAXInteraction(url, handleResponse, 'saveloader');
des.doPost(body);
</script>

有人有任何想法吗?

2 个答案:

答案 0 :(得分:1)

可能会将您的网页指令中的validateRequest设置为false,这样可以解决您的问题。在您要发布到的页面中执行此操作:

<%@ Page validateRequest="false" %>

ASP.NET默认检查对HTML代码等潜在危险输入的请求,并阻止此类请求。请记住,在禁用请求验证时,您必须自己清理输入!

您可以在此处详细了解:http://www.asp.net/learn/whitepapers/request-validation

答案 1 :(得分:0)

在这里找到答案:http://dotnetguts.blogspot.com/2010/06/validaterequestfalse-not-working-in-net.html。 在ASP.NET 4中,默认情况下,为所有请求启用请求验证,并忽略每页的validateRequest设置。

要恢复到ASP.NET 2.0请求验证功能的行为,请在Web.config文件中添加以下设置:

<system.web>
 <httpRuntime requestValidationMode="2.0" />
</system.web>