Jai*_*iro 0 javascript ajax jquery post
我正在尝试将数组传递给jquery的.ajax()函数的数据参数.第一种方法是我制作了这样的二维数组:
var arr = new Array();
for(i in someArray){
arr[i] = new Array();
arr[i].lon = "x";
arr[i].lat = "y";
}
Run Code Online (Sandbox Code Playgroud)
然后我试图通过将此作为数据在$阿贾克斯() :
$.ajax({
data: { vals : arr },
async: false,
type: "POST",
url: "namedb.php",
dataType: "script",
success: function(data){
result = data;
alert(result);
}
});
Run Code Online (Sandbox Code Playgroud)
test.php只返回$ _POST的所有值.所以alert()返回:
Array
(
)
Run Code Online (Sandbox Code Playgroud)
但是,如果我将代码更改为:
var arr = new Array();
for(i in someArray){
arr[i] = new Array();
arr[i] = { lon: "x", lat: "y" };
}
Run Code Online (Sandbox Code Playgroud)
该警报()返回我的预期:
Array
(
[vals] => Array
(
[0] => Array
(
[lat] => "y",
[lon] => "x"
)
...
)
)
Run Code Online (Sandbox Code Playgroud)
我知道这两个方法都初始化了arr的每个元素的变量/属性(或者我错了?).但为什么2方法的表现不同?(对不起,我可以缩短我的问题,但我想我需要解释一下我是如何找到它的).
编辑:我添加了初始化(arr [i] = new Array();).我必须在编辑问题时删除它.但仍然是同样的问题.
那是因为你没有初始化数组元素.
var arr = new Array();
for(i in someArray){
arr[i] = {}; // initialize it!
arr[i].lon = "x";
arr[i].lat = "y";
}
Run Code Online (Sandbox Code Playgroud)
实际上,我更喜欢写作
var arr = new Array();
for(i in someArray){
arr[i] = { lon: "x", lat: "y" };
}
Run Code Online (Sandbox Code Playgroud)
因为我不需要输入arr[i]3次.
for in在数组上使用循环是错误的,你应该使用for循环或jQuery$.each
var arr = [];
for(var i = 0; i < someArray.length; i ++) {
arr[i] = { lon: "x", lat: "y" };
}
Run Code Online (Sandbox Code Playgroud)
要么
var arr = [];
$.each(someArray, function(i, value) {
arr[i] = { lon: "x", lat: "y" };
});
Run Code Online (Sandbox Code Playgroud)
使用Array.prototype.push添加的东西到一个数组是比较容易的,因为你不需要知道数组的下一个索引,也与比较arr[arr.length]=something.
var arr = [];
$.each(someArray, function(i, value) {
arr.push({ lon: "x", lat: "y" });
});
Run Code Online (Sandbox Code Playgroud)
现在你正在做的是从数组中收集数据并将其转换为另一个数组.jQuery已经有了这样做的功能:$.map.
var arr = $.map(someArray, function(value, i) {
return { lon: "x", lat: "y" };
});
Run Code Online (Sandbox Code Playgroud)
请注意,在使用时$.each,参数是i, value,当您使用时$.map,它们会被切换.
| 归档时间: |
|
| 查看次数: |
115 次 |
| 最近记录: |