2009-11-26 70 views
0

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

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

而且我把它发送到服务器这样的:

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

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

回答

1

你是否已经关闭了你的aspx页面的验证请求?

添加这个在您的网页声明:

jQuery.fn.stripTags = function() { 
     return this.replaceWith(this.html().replace(/<\/?[^>]+>/gi, '')); 
}; 

你收到一个ASP.NET的Page_Load:validateRequest="false"

0

要使用jQuery函数剥去标签?如果是,Request.Params中没有任何内容?

0

我会建议逃避使用JavaScript转义函数你的价值观客户端如下图所示

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

一旦你这样做,你可以检索使用以下(.NET代码服务器端的正确值)

HttpUtility.UrlDecode(param_value_to_decode) 

我测试这一点,正确的值被正确地传递给通过post请求的服务器。

希望这会有所帮助。

附加信息:我忘了提及错误的原因。当使用萤火虫检查请求时,它会返回“500内部服务器错误 - 从...检测到潜在危险的Request.Form值”。这是来自asp.net的内置保护机制,以防止脚本注入。下面的页面指令ValidateRequest =“false”没有像预期的那样解决问题(在传统的WebForms中工作)。这可能是特定于Mvc平台的东西,不确定。上述解决方案确实可行,所以请使用它。

问候

+0

使用ValidateRequest MVC中,你需要的指令添加到您的控制器或动作 – Gregoire 2009-11-26 19:16:52

相关问题