我从文本框中读取了一些值,并通过jQuerys post方法将它们发送到服务器。如果用户输入包含“bla bla”之类的文本,则调用失败。在这种情况下,数据看起来像这样:
var data = { myKey: 'bla <script> bla' };
然后我将它发送到服务器:
$.post(targetUrl, data, function(x) {...});
在服务器端(Asp.Net Web表单),看起来呼叫永远不会到达服务器。任何提示如何解决?如果有一个方便的功能可以清除坏标签中的数据,那也没关系。
答案 0 :(得分:1)
您是否已停用aspx页面的验证请求?
在页面声明中添加:validateRequest="false"
答案 1 :(得分:0)
使用jQuery函数剥离标记:
jQuery.fn.stripTags = function() {
return this.replaceWith( this.html().replace(/<\/?[^>]+>/gi, '') );
};
您是否在ASP.NET中收到了page_load?如果是,请问.Params中没有任何内容吗?
答案 2 :(得分:0)
我建议使用javascript转义函数转义客户端的值,如下所示
var data = { myKey: escape('bla <script> bla') };
完成后,您可以使用以下(.Net代码)在服务器端检索正确的值
HttpUtility.UrlDecode(param_value_to_decode)
我对此进行了测试,并通过邮件请求将正确的值正确传递给服务器。
希望这有帮助。
其他信息:我忘了提到错误原因。使用firebug检查请求时,它返回“500内部服务器错误 - 从...检测到潜在危险的Request.Form值”。这是asp.net内置的保护机制,可以防止脚本注入。以下页面指令ValidateRequest =“false”未按预期解决问题(在传统WebForms中工作)。它可能是Mvc平台特有的东西,不确定。上述解决方案确实有效,所以只需使用它。
此致