Javascript:将多维数组转换为ajax

时间:2017-07-08 12:49:20

标签: javascript arrays json object multidimensional-array

我尝试使用ajax将一个javascript数组发送到php他是我所做的

var d = $("#fromDate").val();
var arr = [];
for(var x=0; x<count_select; x++){
       var myArray = new Array();
       myArray['val'] = $("select").eq(x).val();
       myArray['type'] = $("select").eq(x).attr('type');
       myArray['id'] = $("select").eq(x).attr('id');
       arr.push(myArray);
       myArray = new Array();
}

数组在多维数组中包含我想要的元素。

Array screenshot

但是当我把它发送到这样的php页面时:(这里还没有转换数组,我希望将它转换为json发送)

$.ajax({
     type: "POST",
     url: "URL_PATH",
     data: {"arrar":arr,"date":d},
     dataType: "json",
        success: function(data) {
            alert(data);
        }
});

在网络标签中找到

date    "2017-07-08"

并且无法找到数组,所以如何将此多维数组转换为对象,以便我可以使用php处理它

3 个答案:

答案 0 :(得分:1)

var myArray = {}是对象而不是数组。因为数组在js中没有键值对。

&#13;
&#13;
var arr=[];
for(var x=0; x<10; x++){
       var myArray = {};//try with object not a array
       myArray['val'] = 10;
       myArray['type'] = 11;
       myArray['id'] = 12;
       arr.push(myArray);
}

console.log(arr)
&#13;
&#13;
&#13;

答案 1 :(得分:1)

可以使用map()并使用每个项目的对象来简化:

var arr = $('select').map(function() {
  return {
    val:  this.value,
    id:   this.id,
    type: $(this).attr('type')
  }
}).get();

答案 2 :(得分:-1)

var array = new Array()
array["foo"] = "bar";

console.log(JSON.stringify(array))
// -> []

糟糕?

这里的问题是,当你的数组在post请求中发送时,它不会被正确地转换为文本。 JS中的数组只将数字作为索引,JS中没有关联数组。对关联数组的类比是对象。你有一个简单的键:值存储。

你真正想要的是object

var obj = {};
obj["foo"] = "bar";

console.log(JSON.stringify(obj))
// -> { "foo": "bar" }

在Javascript中,一切都是对象,因此可以执行以下操作:

var n = 1;
n.name = "number with property";

你不会得到错误,即使这没有意义;)