[英]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.