【发布时间】:2013-03-17 16:33:09
【问题描述】:
在下面的代码中,我使用 var tag = data[j]['text']; 为 JSON 中的变量分配一个值,然后使用 console.log(tag);(用于测试)输出它,它可以工作。
我尝试使用 tags.push(tag); 将值推送到数组中,但它不起作用!
为什么这些值不进入数组?我只是想将tag 的内容放入一个数组中......
function GetAvailableTags() {
var url = '/TextCodes/TextCodes?key=';
var tagGroups = [];
$('.ui-autocomplete-input').each(function () {
var key = $(this).attr('id');
var tags = [];
//console.log(key);
$.getJSON(url + key, function (data) {
for (var j = 0, len = data.length; j < len; j++) {
var tag = data[j]['text'];
console.log(tag);
tags.push(tag);
}
});
console.log(tags.length);
for (var k = 0, len = tags.length; k < len; k++) {
console.log(tags[k]);
}
});
}
感谢您的帮助。
【问题讨论】:
-
您必须推迟使用来自 JSON 调用的响应,直到调用实际完成; JavaScript 程序不等待响应。使用 Deferreds 或成功处理程序,并将您的代码放在那里。见learn.jquery.com/ajax
-
啊,不是范围对不起,错过了一个括号...
-
您在 ajax 响应填充它之前记录数组。见How to return the response from an AJAX call from a function?
-
我不是在简单地做正在成功完成的事情stackoverflow.com/a/5273921/1477388 吗?为什么它对我不起作用?
标签: javascript jquery