【问题标题】:post an array using jquery ajax使用 jquery ajax 发布一个数组
【发布时间】:2011-04-26 19:57:47
【问题描述】:

我正在尝试做一些相当简单的事情,但我似乎找不到解决方案。我想使用 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 将帖子显示为空,即使数组中加载了各种好东西。

谢谢,

丹尼尔

【问题讨论】:

    标签: json post jquery


    【解决方案1】:

    您正在定义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); }
    });
    

    【讨论】:

    • 我认为数组不存在 JSON.stringify 等价物?无论如何,现在确实可以解决php方面的问题。非常感谢。
    • @mkeats。不用担心。 @丹尼尔。数组是整数索引列表。对象是键索引列表。 JSON 需要有完美的 JavaScript 变量,否则它不会转换。
    • @Daniel, JSON.stringify([{name:'Dude'},{name:'Guy',phone:234556}]) 产生 "[{"name":"Dude"}, {"name":"Guy","phone":234556}]"
    【解决方案2】:

    使用

    data: { '': dataToSend }
    

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

    【讨论】:

      【解决方案3】:

      取自 PHP 帮助页面:

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

      HTML 示例:

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

      内部 php 脚本 提交后,您可以像这样访问单个元素:

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

      【讨论】:

      • 是的,我看到了这个选项,但我没有发布表单的内容。这是我组装的一个 javascript 数组。我需要一种将该数组转换为 json 字符串的方法。
      • 您想将 javascript 数组转换为 Json 字符串吗?
      猜你喜欢
      • 1970-01-01
      • 2013-12-17
      • 1970-01-01
      • 2011-02-10
      • 2014-10-14
      • 2011-12-12
      • 2012-06-22
      • 1970-01-01
      • 2011-01-03
      相关资源
      最近更新 更多