在下面的代码中,我将这个值分配给来自JSON的变量,这个var tag = data[j]['text'];
和我输出它与这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或成功处理程序,并将代码放在那里。见http://learn.jquery.com/ajax/ – Matt 2013-03-17 16:35:08
啊不是范围抱歉,错过了一个括号... – Maresh 2013-03-17 16:36:10
您在ajax响应填满之前记录数组。请参阅[如何从函数返回AJAX调用的响应?](http://stackoverflow.com/questions/14220321/how-to-return-the-response-from-an-ajax-call-from-a功能) – Bergi 2013-03-17 16:36:14