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 对象?我的意思是我在解码调用中放入的内容:

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

编辑完成@MikeBrind 的答案,以帮助其他有同样问题的人。将 decode 用于更复杂的 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 回答