1

次のポストコールがある場合:

 $('#json_form').submit(function (event) {

            event.preventDefault();
            var url = $(this).attr('action');
            var datos = {
                "uno": "lalala",
                "dos": "jojojo"
            }
            var data = JSON.stringify(datos);

            $.post(url, data, function (resultado) {
                $('#posted_values').html(resultado);
            });
        });

cshtml ファイルで json オブジェクトを受け取って処理するにはどうすればよいですか? Decode 呼び出しに入れたことを意味します。

if (IsPost)
    {
        var json_object = Json.Decode(Request???);
}

同じ問題を抱えている他の人を助けるために、@MikeBrindの回答を完成させるために編集されました。より複雑な json オブジェクトにデコードを使用する例。

     $('#json_form').submit(function (event) {

            event.preventDefault();
            var url = $(this).attr('action');
            var datos = {
                "firstName": "John",
                "lastName": "Smith",
                "age": 25,
                "address": {
                    "streetAddress": "21 2nd Street",
                    "city": "New York",
                    "state": "NY",
                    "postalCode": 10021
                },
                "phoneNumber": [
                    {
                        "type": "home",
                        "number": "212 555-1234"
                    },
                    {
                        "type": "fax",
                        "number": "646 555-4567"
                    }
                ]
            }

            var data = JSON.stringify(datos);

            $.post(url, {"person": data}, function (resultado) {
                $('#posted_values').html(resultado);
            });
        });

受信および使用:

@{
    dynamic json_object;    
    if (IsPost)
    {
        json_object = Json.Decode(Request["person"]);
        @json_object.firstName<br/>
        @json_object.lastName<br/>        
        @json_object.address.city<br/>
        @json_object.address.postalCode<br/>
        foreach (dynamic phone in json_object.phoneNumber)
        {
            @phone.type<br/>
            @phone.number
        }

    }    
}
4

1 に答える 1

1

JSON.stringifyこのようなキーと値のペアだけの場合は、データを削除しないでください。フォーム投稿を行います:

$('#json_form').submit(function (event) {
    event.preventDefault();
    var url = $(this).attr('action');
    var datos = {
        "uno": "lalala",
        "dos": "jojojo"
    }
    //var data = JSON.stringify(datos); no need for this

    $.post(url, datos, function (resultado) {
        $('#posted_values').html(resultado);
    });
});

次に、値はRequest["uno"]とから利用できます。Request["dos"]

使用する必要がJSON.stringifyある場合 (より複雑なデータ構造の場合)、JSON はリクエスト本文で送信されるため、次から抽出する必要がありますRequest.InputStream

var reader = new StreamReader(Request.InputStream);
var json = reader.ReadToEnd();
于 2013-02-18T07:38:27.007 に答える