发布之前的JQuery JSON数组格式化/序列化

时间:2014-08-16 02:42:25

标签: javascript jquery arrays ajax json

我有以下JSON:

{ 
 "firstArrayOfJSON": [
          {
            "something" : "something"
          },
          {
            "another" : "another"
          },
          {
            "secondArrayOfJson" : [
                              {
                                "something" : "something",
                                "other" : "other"
                               }
                             ]
          }
         ]
      }

在变量监视(Google Chrome)上,在进行任何处理之前,对象显示为:

[0]: Object
     something : "something"
     another : "another"
     secondArrayOfJson : Object
                         [0]: something : "something",
                         [1]: other : "other"

以下JQuery ajax:

 $.ajax({
                type: "POST",
                url: url,
                data: data,
                success: success,
                dataType: "json"
            });

在服务器(Express JS)上,我有一个测试服务,只是吐出请求体。然后我继续检查客户端的响应。

回复发生了变化:

第一级数组显示为:

[0]: Object
     something : "something"
     another : "another"
     secondArrayOfJson : Object
                         [0][something] : "something",
                         [1][other] : "other"

我仍然可以正常使用该对象:firstArrayOfJson[2].secondArrayofJson[0].something

我测试了在Mongo服务器上的存储,数组元素看起来像[0][something](Robomongo)

当我向secondArrayOfJson添加另一个对象时,"问题"消失。

因此,除非这是Google Chrome和Robomongo上发生的观看者问题,否则这就是对象的传递方式。

我想知道这是否合乎逻辑,或者我是否应该担心我正在做的事情。

1 个答案:

答案 0 :(得分:0)

实际上,我的AJAX查询缺少两个重要的参数。根据JQ文件:

  

data类型:PlainObject或String或Array要发送到的数据   服务器。如果不是字符串,它将转换为查询字符串。   它附加到GET请求的URL。请参阅processData选项   防止这种自动处理。对象必须是键/值对。如果   value是一个数组,jQuery使用相同的键序列化多个值   基于传统设置的价值(如下所述)。

添加

processData : false,
contentType : "application/json"

我确保JQ保持对象完整无缺。我已经尝试过,它运作得很好。

感谢Felix Kling揭开光芒。