【问题标题】:Alerting Javascript array object shows empty警告 Javascript 数组对象显示为空
【发布时间】:2026-02-11 02:30:01
【问题描述】:

我正在尝试将JavaScript 数组发送到我的php,但php 变为空[]。
它甚至在我的浏览器中显示。一直发JSON没问题,现在有了这个格式。

我有这个没有意义的例子......这只是说明问题的代码:

var blah    = [];
var letters = ['a', 'b', 'c', 'd'];

for (var i = 0; i < letters.length; i++)
{
    blah[letters[i]] = i;
}

firebug DOM里面显示如下:

blah      []
    a      0
    b      1
    c      2
    d      3

当我这样做时

  1. alert(blah) ------------------------------- 我空了
  2. alert(JSON.stringify(blah)) ----- 我得到 []
  3. alert(blah.a) ---------------------------- 我得到 0

那么我怎样才能将这个对象传递给php?谢谢

【问题讨论】:

  • 感谢您的回答和努力。 rossipedia 先回答,所以我会接受他的回答。欣赏它

标签: php javascript arrays


【解决方案1】:

尝试使用对象而不是数组。

所以代替:

var blah    = [];

试试

var blah    = {};

【讨论】:

  • 该示例仅用于说明
  • 从我的回答中删除了这个例子。问题是当你应该使用一个对象时,你正在使用一个数组。
【解决方案2】:

数组是连续数字索引的。它们没有字符串作为键名。
你想要的是一个对象{},而不是一个数组[]

【讨论】:

    【解决方案3】:

    我以前回答过这个问题。无论如何,blah 是一个数组,但您没有将其用作数组,而是将其用作哈希图。数组与索引一起使用,映射与键一起使用。 JS 中的任何对象也可以像地图一样工作。例如

    var obj = new Object();
    obj.a = 10;
    obj["b"] = 20;
    
    var obj2 = function(){...}
    obj2.foo = 10;
    obj2.bar = "baz";
    

    同样地,Array 也是和Object 并且可以像地图一样工作。但是当您像地图一样使用数组时,它的数组不会被用来存储元素。他们只是像上面那样行事。所以 Array 的 length 为 0,即使它附加了属性。

    你必须做的是使用像pushpop这样的数组方法来填充和检索它。

    【讨论】:

      【解决方案4】:

      无法在数组中分配键值集合。您需要处理对象:

      var obj = {
          key1: value1,
          key2: value2
      };
      

      您可以使用将数组转换为字符串:

      var fruits = ["Banana", "Orange", "Apple", "Mango"];
      fruits.toString(); 
      

      带分隔符:

      var fruits = ["Banana", "Orange", "Apple", "Mango"];
      var energy = fruits.join(" and "); 
      

      Here is working Demo

      试试这个:

      var blah    = {};
      var letters = ['a', 'b', 'c', 'd'];
      
      for (var i = 0; i < letters.length; i++)
      {
          blah[letters[i]] = i;
      }
      
      alert(JSON.stringify(blah));
      

      【讨论】:

      • 但是如果我的键是一个变量,那我应该如何分配呢?喜欢这个fruits[key] = value