将Array数组传递给Server Jquery Ajax

时间:2011-11-29 06:02:01

标签: javascript jquery json

当我尝试将数组数组传递给服务器时,它会给出(在服务器日志上)

1 => [object, object], 2=> [object, object]

使用ajax数据:数据

console.log上的数据显示:

[Object {name="abc", place="us"}, Object {name="pqr", place="jp"}]

实际数组如下:

data.push({name: "abc", place: "us"})
data.push({name: "pqr", place: "jp"})

我想输出为(在服务器上):

Person1 = {name="abc", place="us"}
Person2 = {name="pqr", place="jp"}

我试过jQuery.Serialize它不起作用并尝试将其转换为JSON但在客户端失败。(给出输出[])

我不确定,我哪里出错了。我可以直接将数据阵列发送到服务器吗?

由于 病毒

2 个答案:

答案 0 :(得分:2)

JavaScript数组和对象不是一回事。数组具有带数字索引的元素,而对象具有带字符串键名的属性。

你可能想要这样的东西:

var data = {
   Person1 : {name:"abc", place:"us"},
   Person2 : {name:"pqr", place:"jp"}
};

这会创建一个对象(data),它具有属性“Person1”和“Person2”,它们本身就是对具有“name”和“place”属性的对象的引用。

或者,将属性添加到对象的数组推送方法的等效方法是:

// create an empty object
var data = {};

// set properties
data["Person1"] = {name:"abc", place:"us"};
data["Person2"] = {name:"pqr", place:"jp"};

// or use dot notation:
data.Person3 = {name:"xyz", place:"au"};

答案 1 :(得分:1)

如果你想尝试,序列化并将数据对象作为JSON传递给服务器端,这里是一个ajax。

var data = {
    Person1 : { name:'abc', place:'us'},
    Person2 : { name:'pqr', place:'jp'}
}

$.ajax({
    type: 'POST',
    url: 'url',
    data: JSON.stringify(data),
    contentType: 'application/json; charset=utf-8',
    dataType: 'json',
    success: function(msg) {
    //success
  }
});