在POST上将javascript对象读取为JSON

Reading a javascript object as JSON on POST

本文关键字:读取 JSON 对象 javascript POST 上将      更新时间:2023-09-26

我在其他SO帖子中读到"javascript是JSON"。我很难将这个理论转化为我的应用程序。我用jQuery 执行POST

    $.ajax({
        type: 'POST',
        url: 'Pricing/Create',
        data: items,
        success: function () { alert('successfully called pricing'); },
        dataType: 'json'
    });

帖子成功地命中了我的PricingControllerCreate方法中的断点。在查看我的Request.QueryString时,它是空的。

itemsSomeItemlength = 30的阵列。定义为

function SomeItem(description, finalPrice, percentDiscount) {
    this.Description = description;
    this.FinalPrice = finalPrice;
    this.PercentDiscount = percentDiscount;
}

我不执行JSON转换,因为"javascript就是JSON"。如何获取定价控制器中的数据?


差不多到了。当JSON.stringify(items)运行时,我在alert((中看到了一组不错的垃圾(在Firebug中也很漂亮(:

[{"Description":"some item","Data2":"$1.00","data3":"10"},//...

但是,当它到达服务器时。。。在C#Request.Form中,它看起来像:

%5b%7b%22Description%22%3a%22some+item%22%2c%22data2%22wtflip是。。。

JSON是"JavaScript对象表示法",而不是JavaScript。您使用JSON来表示JavaScript对象,尤其是当您想将其发送回服务器时。

在将JavaScript对象传递给ajax调用之前,您确实需要将其转换为JSON——这应该可以做到:

var json = $.toJSON(items);

读一读这篇文章,可能会有所帮助:http://haacked.com/archive/2010/04/15/sending-json-to-an-asp-net-mvc-action-method-argument.aspx

您尝试过JSON.stringify()吗?

您可以将数据线更改为:

data: JSON.stringify(items),

如果目标浏览器本机不支持JSON.stringify(),您可以在谷歌上搜索一个库来填充该功能。

如果您使用POST方法,那么它不会出现在QueryString变量中。如果你观察一个类似于fiddler的工具发生了什么,你的数据(项(是否会在请求的主体中传递回来?如果是这样,那么你应该能够访问它。否则,你的AJAX请求就有问题了。