如何解决如何通过AJAX发送复杂字符串
| 我必须通过ASP.NET MVC中的AJAX从我的视图向特定的控制器操作发送复杂的字符串。 该字符串需要包含各种字符,例如<,>,&,\“,\'。 我在javascript中使用以下代码: var request = new Sys.Net.WebRequest(); request.set_url(\“ / Controller / Action?Param = \” + str); // str是要发送的字符串 request.set_httpVerb(\“ POST \”); request.invoke(); 但是,当我运行页面时,AJAX请求没有到达控制器中的操作。 谁能告诉我如何实现这一目标?解决方法
在str上使用encodeURIComponent
var request = new Sys.Net.WebRequest();
request.set_url(\"/Controller/Action?Param=\" + encodeURIComponent(str)) ; // str is the string to be sent
request.set_httpVerb(\"POST\");
request.invoke();
,我想您正在寻找Server.UrlEncode
。或在javascript中只是普通的encodeURI
/encodeURIComponent
。
对原始数据进行编码,然后再将其附加到URL。
,像这样在global.asax中创建删除方法
routes.MapRoute(\"Delete\",//Route name
\"ControllerName/MethodName/{id}\",new { controller = \"controller Name\",action = \"Method Name\",id = 1 }
,request.set_url(\"/Controller/Action?Param=\'\" + str+\"\'\"+) ;
,我会推荐你jQuery。 Microsoft AJAX就像石器时代一样,在ASP.NET MVC中已完全弃用。我的意思是,如果您正在使用某些旧版ASP.NET WebForms应用程序,那么您将有一个借口,但是在ASP.NET MVC中没有借口。所以:
$.ajax({
url: \'<%= Url.Action(\"Action\",\"Controller\")\',type: \'POST\',data: { Param: str },success: function(result) {
// handle the success
}
});
同样,如果需要发送特殊字符,例如<
,>
,...,则必须确保相应的控制器动作已用[ValidateInput(false)]
属性修饰:
[ValidateInput(false)]
public ActionResult Action(string Param)
{
...
}
如果您使用的是ASP.NET 4.0,则可能还需要在web.config中设置以下内容才能使其正常工作:
<httpRuntime requestValidationMode=\"2.0\" />
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。