使用包含列表的json数据发送post请求

时间:2014-04-30 05:06:30

标签: javascript jquery ajax json post

解决。解决方案是将contentType设置为'application / json'并使用JSON.stringify(obj)而不是obj,但您可能必须更改服务器上的数据获取方式,具体取决于语言或框架。原始问题如下......

这是我正在尝试的事情

var obj = {
    'firstName': 'bill',
    'lastName': 'johnson',
    'hobbies': ['apples', 'dogs']
    });
$.ajax({
    type: 'POST',
    url: '/myurl'
    data: obj,
    success: function(data){alert(data);}
    });

如果我提醒/记录JSON.stringify(obj),我会得到正确的结果,即:

{'firstName': 'bill', 'lastName': 'johnson', 'hobbies': ['apples', 'dogs']}

但是,当我执行上述ajax调用时,我的服务器会得到以下内容:

{'firstName': 'bill', 'lastName': 'johnson', 'hobbies[]': 'apples'}

这显然不适合json。我尝试添加各种contentType参数,但后来我的服务器实际上什么都没有(一个空的帖子请求)。

我也尝试将data参数设置为预先字符串化的JSON字符串(这是正确的),但是然后jquery转义它并且我的服务器得到它:

{"{\"firstName\":\"bill\",\"lastName\":\"johnson\",\"hobbies\":[\"apples\",\"dogs\"]}": ""}

我尝试将processData设置为false,但这不会改变任何内容。

我已经研究了几个小时,但还没有开始工作。当然有一种方法可以将带有列表的json发送到服务器......

任何提示?

2 个答案:

答案 0 :(得分:1)

从您认为对我来说正确的帖子中,我对JSON本人有点新意,但看起来它将最后一个键值对视为一个数组,以访问您必须使用正确索引访问的各个元素价值。来自json.org JSON基于两种结构: •名称/值对的集合。在各种语言中,这被实现为对象,记录,结构,字典,散列表,键控列表或关联数组。 •有序的值列表。在大多数语言中,这被实现为数组,向量,列表或序列。 如果您仍然认为有问题,可以在jsonlint.com上查看。

答案 1 :(得分:0)

试试这个

  $.ajax({
    url: url,
    type: 'POST',
    datatype: "json",
    traditional: true,
    data: { 
        menuItems: JSON.stringify(myArray),
                },
    success: function () { window.alert('success'); },
    error: function (event, request, settings) {  
        window.alert('error'); },
    timeout: 20000
 });