所以我抓住这个XML数据,并在这个jQuery.ajax调用的成功函数中解析它。
var d1 = [];
jQuery.ajax(
{ url: ("/charts/quotes/" + name + ".xml"),
success: function( data )
{
var dString; var qString; var d; var q;
jQuery(data).find("HistoricalQuote").each(
function () {
dString = $(this).children("Date").text();
qString = $(this).children("LastClose").text();
d = Date.parse(dString);
q = parseFloat(qString);
d1.push( [ d, q ] );
console.log( d1[d1.length-1][0] + ": " + d1[d1.length-1][1] );
/* ^ First Log ^ */
} );
console.log( d1.length );
for ( var q in d1 )
{
console.log(q[0] + ": " + q[1]);
/* ^ Second Log ^ */
}
},
async: false /*The success function must complete before we continue.*/
});
现在,第一个日志正在给我回复我期望的数据 - “d”是一个非常长的整数,看起来它可能是一个时间戳,而“q”是股票报价 - a漂浮在26左右。
这是奇怪的事情。除了每个循环(“第二个日志”)之外 - 我得到了一组截然不同的数据。它始于:
(对不起,行返回... Stack Overflow正在做一些奇怪的事情)
0:未定义
1:未定义
2:未定义
3:未定义
4:未定义
5:未定义
6:未定义
7:未定义
8:未定义
9:未定义
...然后继续:
1:0
1:1
1:2
...
1:9
2:0
...
3:9
4:0
这是否与我第二次循环播放的方式有关?或者“推”的方式有效吗?世界上到底发生了什么?
答案 0 :(得分:1)
q
实际上将是d1中项目的索引,而不是值。您可能希望执行以下操作:
for ( var q in d1 )
{
console.log(d1[q][0] + ": " + d1[q][1]);
/* ^ Second Log ^ */
}
然而,在数字索引数组中使用for / in是一个坏主意...请参阅heikki评论中的链接。