【问题标题】:How to serialize array in JavaScript calling Web.api如何在 JavaScript 调用 Web.api 中序列化数组
【发布时间】:2014-06-10 13:53:17
【问题描述】:

将数组发布到 web.api(api 控制器)并不能以我猜的最简单的形式工作。

我有这个 JavaScript

var ann = { Age: 11, Name: 'Ann' };
var bob = { Age: 22, Name: 'Bob' };
var list = [ann, bob];

$.ajax({
    url: '/api/myapi/',
    data:list,
    dataType: 'json',
    type: "POST",
});

然后我有一个带有简单后处理程序的 web.api

public void Post(JObject pList)
{
    //Whatever
}

如果我将“data:list”更改为“data:ann”,那么一切都会按预期进行(当然 bob 没有出现)。但是我一列出清单就不起作用了。

我尝试查找解决方案,有些似乎是在 JavaScript 中手动序列化,这是解决此问题的正确“解决方案”/“最佳实践”,还是有更简单的方法?

【问题讨论】:

    标签: c# javascript jquery json asp.net-web-api


    【解决方案1】:

    我认为这可能对你有用

    $.ajax({
        url: '/api/myapi/',
        data: JSON.stringify(list),
        contentType: 'application/json',
        type: "POST",
    });
    

    还有你的控制器

    public void Post(List<yourobject> list)
    {
        //Whatever
    }
    

    【讨论】:

    • 谢谢。我想这回答了在 JavaScript 中序列化是最佳解决方案的问题。 Web.api 然后得到一个列表的事实是对我其他尝试做的事情的明显阅读改进
    【解决方案2】:

    只需将您的 ajax 请求更改为:

    $.ajax({
        url: '/api/myapi/',
        data:list,
        traditional: true,
        dataType: 'json',
        type: "POST",
    });
    

    如果您想了解更多信息,请阅读此内容:http://api.jquery.com/jQuery.param/

    【讨论】:

    • 即使使用 trational,我的 JObject 看起来也像: base {Newtonsoft.Json.Linq.JContainer} = { "undefined": [ "", "" ] }
    猜你喜欢
    • 2018-11-01
    • 2015-04-12
    • 2016-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-20
    • 1970-01-01
    相关资源
    最近更新 更多