使用jquery ajax发布数组

时间:2011-04-26 19:57:47

标签: json post jquery

我正在尝试做一些相当简单的事情,但我似乎无法找到解决方案。我想使用jQuery的.ajax函数将多维数组发布到php页面,但我似乎无法正确地序列化数组。

代码如下

var dataToSend = new Array();
  dataToSend["page"] = location.href;
  dataToSend["data"] = new Array();
  var dataindex = 0;
  jQuery(".myclass").each(function(){
      dataToSend["data"][dataindex]=new Array();
      dataToSend["data"][dataindex]["selector"] = unique_selector(jQuery(this), "");
      dataToSend["data"][dataindex]["contents"] = jQuery(dataToSend["data"][dataindex]["selector"]).html();
  });
  jQuery.ajax({
      type: 'POST',
      url: "/main/save.php",
      data: JSON.stringify(dataToSend),
      dataType: "json",
      success: function(data){alert(data);}
  });

基本上我不确定如何正确传递dataToSend数组。现在firebug将帖子显示为空,即使数组中装载了各种好东西。

谢谢,

丹尼尔

3 个答案:

答案 0 :(得分:11)

您正在定义new Array();,但您将其用作new Object()。尝试使用对象。

试试这个:

var dataToSend = { 
    page: location.href, 
    data: []
};
var dataindex = 0;
jQuery(".myclass").each(function(){
    var temp = unique_selector(jQuery(this), "");
    dataToSend.data[dataindex++] = {
        selector: temp,
        contents: jQuery(temp).html()
    };
});
jQuery.ajax({
    type: 'POST',
    url: "/main/save.php",
    data: JSON.stringify(dataToSend),
    dataType: "json",
    success: function(data){ alert(data); }
});

答案 1 :(得分:0)

取自PHP帮助页面:

你可能在表单输入中有多维数组

HTML示例:

<input name="data[User][firstname]" type="text" />
<input name="data[User][lastname]" type="text" />
...

内部php脚本 提交后,您可以访问单个元素,如下所示:

$firstname = $_POST['data']['User']['firstname'];
...

答案 2 :(得分:0)

使用

data: { '': dataToSend }

我在类似的场景中使用了它,它就像魅力......