Ajax Post上的Json原语无效

时间:2015-07-28 14:16:39

标签: javascript jquery ajax json asp.net-mvc

我使用AJAX发布我的表单:

$(function () {
    $("#Compare").click(function (e) {         
        $.ajax({
            url: '@Url.Action("_Compare","API")',
            dataType: 'application/json',
            data: {
                model: $("#CompareForm").serialize()
            },
            type: "post",
            success: function(response) {
                alert (response);
            }
        });
        e.preventDefault();
    });
});

我正在尝试反序列化我的JSON结果,但是我得到了一个'无效的Json原始异常'。

我的Json结果:

"%5B0%5D.Id=1&%5B0%5D.Description=Sutherland+Silver+Plans+offers+you...&%5B0%5D.Price=30&%5B0%5D.Title=Silver+Plan&%5B0%5D.isSelected=true&%5B0%5D.isSelected=false&%5B1%5D.Id=2&%5B1%5D.Description=Sutherland+Gold+Plans+offers+you...&%5B1%5D.Price=50&%5B1%5D.Title=Gold+Plan&%5B1%5D.isSelected=true&%5B1%5D.isSelected=false&%5B2%5D.Id=3&%5B2%5D.Description=Sutherland+Platinum+Plans+offers+you...&%5B2%5D.Price=80&%5B2%5D.Title=Platinum+Plan&%5B2%5D.isSelected=false"

1 个答案:

答案 0 :(得分:2)

您似乎对JSON是什么感到困惑,以及问题是与请求还是响应有关。

问题在于请求。您正在尝试将serialize()创建的查询字符串放入对象的model参数中,该对象本身将被序列化并再次编码。相反,只需将序列化生成的查询字符串传递给操作:

$("#Compare").click(function (e) {         
    $.ajax({
        url: '@Url.Action("_Compare","API")',
        dataType: 'application/json',
        data: $("#CompareForm").serialize(),
        type: "post",
        success: function(response) {
            console.log(response);
        }
    });
    e.preventDefault();
});

您已指定响应将为JSON。如果是这种情况,请使用console.log进行检查,否则alert()只会显示[object Object]