jQuery ajax调用包含数据中的script-tag

时间:2009-11-26 15:43:25

标签: asp.net jquery ajax

我从文本框中读取了一些值,并通过jQuerys post方法将它们发送到服务器。如果用户输入包含“bla bla”之类的文本,则调用失败。在这种情况下,数据看起来像这样:

var data = { myKey: 'bla <script> bla' };

然后我将它发送到服务器:

 $.post(targetUrl, data, function(x) {...});

在服务器端(Asp.Net Web表单),看起来呼叫永远不会到达服务器。任何提示如何解决?如果有一个方便的功能可以清除坏标签中的数据,那也没关系。

3 个答案:

答案 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平台特有的东西,不确定。上述解决方案确实有效,所以只需使用它。

此致