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 に答える