将js Array()转换为JSon对象以与JQuery .ajax一起使用

在我的应用程序中,我需要通过ajax发送一个javascript数组对象到PHP脚本。 像这样的东西:

var saveData = Array(); saveData["a"] = 2; saveData["c"] = 1; alert(saveData); $.ajax({ type: "POST", url: "salvaPreventivo.php", data:saveData, async:true }); 

数组的索引是字符串而不是int,因此像saveData.join(’&’)这样的东西不起作用。

想法?

提前致谢

如果它不是数组,请不要使它成为数组,使其成为对象:

 var saveData = {}; saveData.a = 2; saveData.c = 1; // equivalent to... var saveData = {a: 2, c: 1} // equivalent to.... var saveData = {}; saveData['a'] = 2; saveData['c'] = 1; 

按照使用Arrays的方式进行操作只是利用Javascript对Arrays的处理而不是真正正确的方法。

如果已经定义了数组,则可以通过循环遍历数组的元素来创建json对象,然后可以将其发布到服务器,但是如果要创建数组,就像上面的情况一样,只需创建一个json对象Paolo Bergantino吸食

  var saveData = Array(); saveData["a"] = 2; saveData["c"] = 1; //creating a json object var jObject={}; for(i in saveData) { jObject[i] = saveData[i]; } //Stringify this object and send it to the server jObject= YAHOO.lang.JSON.stringify(jObject); $.ajax({ type:'post', cache:false, url:"salvaPreventivo.php", data:{jObject: jObject} }); // reading the data at the server  //for jObject= YAHOO.lang.JSON.stringify(jObject); to work, //include the follwing files // // // // 

希望这可以帮助

您可以迭代saveData对象的键/值对以构建对的数组,然后在结果数组上使用join(“&”):

 var a = []; for (key in saveData) { a.push(key+"="+saveData[key]); } var serialized = a.join("&") // a=2&c=1 

数组对象和JSON对象之间存在实际差异。 而不是创建数组对象并将其转换为json对象(使用JSON.stringify(arr)),您可以这样做:

 var sels = //Here is your array of SELECTs var json = { }; for(var i = 0, l = sels.length; i < l; i++) { json[sels[i].id] = sels[i].value; } 

不需要将其转换为JSON,因为它已经是一个json对象。 要查看相同的用法json.toSource();

当使用服务器上的数据时,你的字符可以通过添加斜杠来达到,例如,如果string = {“hello”}来为string = {\“hello \”}来解决以下函数,可以在以后使用json decode 。