1

私は午前中ずっと回避策を見つけようとしましたが(SOの関連するすべての投稿を閲覧し、自分でいくつかの実験を行いました)、失敗しました。

サーバーコードは次のとおりです。

コントローラ:

[HttpGet]
    public JsonResult Test(Entity e)
    {
        return Json(new { success = true }, JsonRequestBehavior.AllowGet);
    }

実在物:

public class Entity
{
    public string A { set; get; }

    public string B { set; get; }
}

クライアントコードの場合:

var e = {
        A: "1",
        B: "2"
    };

    $.ajax({
        url: "/Home/Test",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        data: JSON.stringify(e)
        //                data: e
    });

私は得る: notfine

クライアントコード付き:

var e = {
        A: "1",
        B: "2"
    };

    $.ajax({
        url: "/Home/Test",
        //contentType: "application/json; charset=utf-8",
        dataType: "json",
        //data: JSON.stringify(e)
        data: e
    });

私は得る: 大丈夫

答えを見つけたいと思っています。cozapplication/jsonの方が便利です

編集

プロトコルをPOSTに変更すると、パラメーターを正しく渡すことができます。ここに新しい質問があります:なぜGETしないのですか?変換されたリクエストクエリ文字列がmvc3のニーズを満たしていませんか?

EDIT2

http://forums.asp.net/t/1766534.aspx/1

すべての問題はGETメソッドにあるようです。GETは複雑なパラメータを渡すべきではありませんか?uがrestFULのファンなら、それは非常に奇妙です

4

1 に答える 1

1

リクエストタイプを指定してみてください(とにかくデフォルトではGETになっていますが):

var e = {
            A: "1",
            B: "2"
        };

$.ajax({
            type: "GET",
            url: "/Home/Test",
            contentType: "application/json;charset=utf-8",
            dataType: "json",
            data: JSON.stringify(e)
});

または、リクエストを使用して、アクションメソッドを次の属性POSTで装飾してみてください。JsonResult[HttpPost]

[HttpPost]
public JsonResult Test(Entity e)
{
     return Json(new { success = true }, JsonRequestBehavior.AllowGet);
}

それから

$.ajax({
            type: "POST",
            url: "/Home/Test",
            contentType: "application/json;charset=utf-8",
            dataType: "json",
            data: JSON.stringify(e)
      });
于 2013-01-06T04:30:25.163 に答える