这是我的第一个问题。
我有一个AJAX返回JSON字符串,在function.done之后,通过:
var arData = [];
$.each(response, function(key, value) {
var temp = [value[0], value[1]];
arData.push(temp);
//console.log(temp);
});
console.log(arData);
当我打印var temp时,结果很正常,类似于[“BUFFER STOK”,497206627]。 但是,当我打印出arData变量时,生成的控制台日志如下:
一系列二维数组如何显示长度为4,元素为0,1和3?
编辑:这是响应对象的日志: resulting response log
***** UPDATE *****
我正试图重新提出我的问题。 我正在使用ajax成对获取json数据:[[“data 1”,int value 1],[“data 2”,int value 2],...]。 根据这些数据,我打算使用arData.push([“data 1”,int value 1]);来为每对json数据创建一个具有相同值的javascript数组。
这是我的原始代码:
var arData = [];
$.ajax({
cache: false,
type: 'get',
url: 'dtsearch4.php',
data: {type : 2},
dataType: 'json',
async: false
})
.done(function(response){
$.each(response, function(key, value) {
$.each(v,function(key, value){
//var temp = [value[0], value[1]];
arData.push([value[0], value[1]]);
});
});
但是,生成的数组是这样的:
v[Array[2], Array[2],[Array[2],...]
v0: Array[4]
0: "APBD-I"
1: 302462864
3: NaN
length: 4
__proto__: Array[0]
v1: Array[4]
v2: Array[4]
=>数组[4]和元素编号0,1和3是什么?没有2号?
虽然我想要的是一个包含2个元素的数组:
v[Array[2], Array[2],[Array[2],...]
v0: Array[2]
0: "APBD-I"
1: 302462864
length: 2
__proto__: Array[0]
v1: Array[2]
v2: Array[2]
答案 0 :(得分:2)
你必须运行两次循环。
$.each(v, function(v_key, v_value) {
$.each(v_key,function(key, value){
arData.push([value[0], value[1]]);
});
});
1st loop will take the values like v0, v1, v2.
second loop will take the values of v0 like 0,1,3,length,__proto__
答案 1 :(得分:1)
通常它的工作正常,
<html>
<head>
<script>
function callthis(){
var arData = [];
{
var value=[];
value[0]="vasim";
value[1]="vanzara";
var temp = [value[0], value[1]];
arData.push(temp);
//console.log(temp);
}
console.log(arData);
}
</script>
</head>
<body>
<input type="button" onclick="callthis()" value="Click me">
</body>
</html>
您可以使用JavaScript代替Jquery进行呼叫服务, http://www.javascriptkit.com/dhtmltutors/ajaxgetpost.shtml
答案 2 :(得分:-1)
在此代码中,jQuery将为response
对象中的每个元素调用您的回调函数。 temp
的生命周期仅存在于该函数结束之前。因此,您只能在console.log(temp)
调用中看到长度为2的数组,因为它没有以前的值。
$.each(response, function(key, value) {
var temp = [value[0], value[1]];
arData.push(temp);
//console.log(temp);
});