繁体   English   中英

Javascript:将多维数组转换为ajax中的对象

[英]Javascript: convert a multidimensional array to object in ajax

我尝试使用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();
}

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

数组截图

但是当我将其发送到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处理它

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

 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) 

可以使用map()并为每个项目使用对象来简化此操作:

var arr = $('select').map(function() {
  return {
    val:  this.value,
    id:   this.id,
    type: $(this).attr('type')
  }
}).get();
var array = new Array()
array["foo"] = "bar";

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

哎呀

这里的问题是,要在发布请求中发送数组时,数组无法正确转换为文本。 JS中的数组只希望数字作为索引,而JS中没有关联数组。 类比关联数组是对象。 您有一个简单的钥匙:值存储。

你真正想要的是一个object

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

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

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

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

而且即使那没有道理,您也不会出错;)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM