如何在Razor页面中的Ajax中发送JSON

时间:2018-11-02 06:10:21

标签: jquery asp.net-core .net-core razor-pages

我有带有列表复选框和三个输入文本的表单,我想发送给它 在服务器上的格式为json并接受它。我该怎么办? 我试图这样做

$(function () {
    $('#show').click(function () {
        var ser = $(this).closest('form').serialize();
        $.ajax({
            url: '/Index',
            type: 'POST',
            data: JSON.stringify(ser),
            dataType: 'json',
            success: successFunc
        });
    });
});
function successFunc(data, status) {
    alert(data);
} 

谢谢。

1 个答案:

答案 0 :(得分:2)

代码不起作用的原因是,当您将数据发布为JSON时需要add a header for the Request Verification token to the AJAX request

$(function(){
    $(':submit').on('click', function (e) {
        e.preventDefault();
        var data = $(this).closest('form').serializeArray();
        $.ajax({
            url: $(this).closest('form').attr('action'),
            headers: { "RequestVerificationToken": $('input[name="__RequestVerificationToken"]').val() },
            type: 'POST',
            data: JSON.stringify(data),
            contentType: "application/json"
        });
    });
});

如果不执行此操作,则会得到400错误的请求结果,这就是代码失败的原因。

当前接受的答案似乎有效,因为它不发布JSON(根据您的问题,这是必需的)。值将作为标准的URL编码名称/值对发布。

如果您实际上要发布JSON,则需要对表单值进行字符串化。