将我们的项目升级到.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>
有人有任何想法吗?
答案 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>