我想知道为什么调用jquery.Ajax并通过参数在数据上发送如下字符串:"Z<Z"
= "String<String"
崩溃!我和|@##~¬//("·$
之类的其他人一起尝试过,但没有问题......
我已经解决了使用encodeUriComponent,但我想知道为什么会崩溃以及是否有另一种方法来解决它。
function getData() {
var code = "Z<Z"
return { Id : code };
}
function goAjax(){
dataSelected = getData();
$.ajax({
url: "/Controller/Action",
type: "POST",
data: dataSelected,
success: function (data, status, xhr) {
alert("Ok")
},
error: function (xhr, status, err) {
alert('error');
}
});
}
答案 0 :(得分:2)
那是因为您在服务器上使用ASP.NET,默认情况下不允许您发送此类字符。你可以禁用它。例如,如果您使用的是ASP.NET MVC,则可以使用[ValidateRequest(false)]
属性修饰要发布到的控制器操作:
[ValidateRequest(false)]
public ActionResult Action(MyViewModel model)
{
...
}
或者,如果您不想为整个操作禁用请求验证,则只能使用[AllowHtml]
属性修饰视图模型上的属性:
public class MyViewModel
{
[AllowHtml]
public string Id { get; set; }
}
然后:
public ActionResult Action(MyViewModel model)
{
...
}
现在,您只能为Id
属性发送这些字符。