var list = [];
$.getJSON("json.js", function(data) {
$.each(data, function(i, item) {
console.log(item.text);
list.push(item.text);
});
});
console.log(list.length);
list.length
总是返回0。我浏览过的JSON的萤火虫,它的形成很好,一切都看起来很好。 我似乎无法将项目添加到阵列中我失去了什么?
由于$.getJSON
是异步的,我觉得你console.log(list.length);
已被填充您的阵列之前的代码发射。 要纠正此把你console.log
陈述你的回调中:
var list = new Array();
$.getJSON("json.js", function(data) {
$.each(data, function(i, item) {
console.log(item.text);
list.push(item.text);
});
console.log(list.length);
});
您正在一个Ajax请求是异步的,因此Ajax请求完成之前发生的名单长度的控制台日志。
实现你想要什么的唯一方法是改变Ajax调用是同步的。 假然而,这并不推荐,因为它锁定用户接口直到调用返回,如果失败,返回用户有碰撞出的浏览器:您可以通过使用阿贾克斯和传递非同步执行此操作。
希望对你有帮助..
var list = [];
$(document).ready(function () {
$('#test').click(function () {
var oRows = $('#MainContent_Table1 tr').length;
$('#MainContent_Table1 tr').each(function (index) {
list.push(this.cells[0].innerHTML);
});
});
});