我尝试使用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处理它
答案 0 :(得分:1)
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)
&#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";
你不会得到错误,即使这没有意义;)