0

我想知道为什么调用 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');
            }
        });
    }
4

1 回答 1

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现在您可以仅为该属性发送这些字符。

于 2013-03-01T08:32:11.593 回答