Javascript 韩元价值';t推送至阵列
在下面的代码中,我用Javascript 韩元价值';t推送至阵列,javascript,jquery,Javascript,Jquery,在下面的代码中,我用var tag=data[j]['text']为JSON中的变量赋值并用这个console.log(标记)输出它(用于测试)有效 我尝试将值推入带有标记的数组中但它不会工作 为什么这些值不进入数组?我只是想把tag的内容放到一个数组中 function GetAvailableTags() { var url = '/TextCodes/TextCodes?key='; var tagGroups = [];
var tag=data[j]['text']为JSON中的变量赋值代码>并用这个console.log(标记)输出它代码>(用于测试)有效
我尝试将值推入带有标记的数组中代码>但它不会工作
为什么这些值不进入数组?我只是想把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]);
}
});
}
函数GetAvailableTags(){
var url='/TextCodes/TextCodes?key=';
var tagGroups=[];
$('.ui自动完成输入')。每个(函数(){
var key=$(this.attr('id');
var标签=[];
//控制台日志(键);
$.getJSON(url+键,函数(数据){
对于(var j=0,len=data.length;j
谢谢您的帮助。因为$。getJSON
是一个异步函数。这意味着你的代码
console.log(tags.length);
for (var k = 0, len = tags.length; k < len; k++) {
console.log(tags[k]);
}
这就是为什么在上面的代码中查看时,变量似乎是空的,但是如何可能使用console.log(tag)打印数据代码>在回调函数中
更新
下面是一个使用$.ajax方法而不是$.getJSON来指定必须使用参数asynch:false
通过这种方式,服务器调用响应(成功回调)是继续该过程所必需的。这种非标准方式的缺点是,在等待服务器响应时,您的网页可能会被冻结。这不是最好的优雅方式,但有时它是有用的
function GetAvailableTags() {
var url = '/TextCodes/TextCodes?key=';
var tagGroups = [];
$('.ui-autocomplete-input').each(function () {
var key = $(this).attr('id');
var tags = [];
//console.log(key);
$.ajax({
url: url + key,
type: 'POST',
asynch: false,//specify to stop JS execution waiting the server response
success: function (data) {
for (var j = 0, len = data.length; j < len; j++) {
var tag = data[j]['text'];
console.log(tag);
tags.push(tag);
}
},
error : function(jqXHR, textStatus, errorThrown) {
alert('an error occurred!');
}
});
console.log(tags.length);
for (var k = 0, len = tags.length; k < len; k++) {
console.log(tags[k]);
}
});
}
函数GetAvailableTags(){
var url='/TextCodes/TextCodes?key=';
var tagGroups=[];
$('.ui自动完成输入')。每个(函数(){
var key=$(this.attr('id');
var标签=[];
//控制台日志(键);
$.ajax({
url:url+键,
键入:“POST”,
asynch:false,//指定停止JS执行以等待服务器响应
成功:功能(数据){
对于(var j=0,len=data.length;j
我的解决方案有点冗长和愚蠢,但它是有效的。现在,我可以访问数组textCodes['taxes']
之类的变量。sdespont的async
note也有帮助
var textCodes = GenerateTextCodes();
console.log(textCodes);
function GenerateTextCodes() {
var arr = [];
$('.ui-autocomplete-input').each(function () {
var id = $(this).attr('id');
arr[id] = GetAvailableTags(id);
});
//console.log(arr['taxes']);
return arr;
}
// get all autocomplete element IDs and put them into an array
function GetAvailableTags(key) {
var url = '/TextCodes/TextCodes?key=';
var tags = [];
$.ajax({
url: url + key,
type: 'GET',
async: false,
success: function (data) {
//console.log(data[0].text);
//console.log(data.length);
for (var i = 0; i < data.length; i++) {
//console.log(data[i].text);
tags.push(data[i].text);
}
},
error: function (jqXHR, textStatus, errorThrown) {
alert('an error occurred!');
}
});
//console.log(tags);
return tags;
}
var textCodes=GenerateTextCodes();
console.log(文本代码);
函数GenerateTextCodes(){
var-arr=[];
$('.ui自动完成输入')。每个(函数(){
var id=$(this.attr('id');
arr[id]=GetAvailableTags(id);
});
//console.log(arr['taxes']);
返回arr;
}
//获取所有自动完成元素ID并将它们放入数组中
函数GetAvailableTags(键){
var url='/TextCodes/TextCodes?key=';
var标签=[];
$.ajax({
url:url+键,
键入:“GET”,
async:false,
成功:功能(数据){
//console.log(数据[0].text);
//console.log(data.length);
对于(变量i=0;i
您必须推迟使用JSON调用的响应,直到调用实际完成;JavaScript程序不会等待响应。使用延迟或成功处理程序,并将代码放在其中。看啊,不是范围对不起,错过了一个括号…您正在ajax响应填充它之前记录数组。看,我不是简单地做了这里正在成功完成的事情吗?为什么它对我不起作用?那么,我如何才能将json数据放入数组?您正在将值推入数组。你只是想在它到达之前把它展示出来。您可以考虑使用$.ajax和设置AsYNC=false,而不是GETJSON速记:请查看您的数据在数组中,但仅在执行回调时。将您的逻辑添加到回调中,以使用数组数据,如表单元素值更新或任何您想要执行的操作。您还可以调用一个函数在回调结束时执行。$.getJSON
方法的回调函数在哪里?从根本上说,他们似乎在做我正在做的事情。它们使用$循环。每个并推送到数组…回调函数定义为$.getJSON方法的第二个参数。当服务器回复数据时调用此函数。您已经在使用回调,它是您创建数组的地方
var textCodes = GenerateTextCodes();
console.log(textCodes);
function GenerateTextCodes() {
var arr = [];
$('.ui-autocomplete-input').each(function () {
var id = $(this).attr('id');
arr[id] = GetAvailableTags(id);
});
//console.log(arr['taxes']);
return arr;
}
// get all autocomplete element IDs and put them into an array
function GetAvailableTags(key) {
var url = '/TextCodes/TextCodes?key=';
var tags = [];
$.ajax({
url: url + key,
type: 'GET',
async: false,
success: function (data) {
//console.log(data[0].text);
//console.log(data.length);
for (var i = 0; i < data.length; i++) {
//console.log(data[i].text);
tags.push(data[i].text);
}
},
error: function (jqXHR, textStatus, errorThrown) {
alert('an error occurred!');
}
});
//console.log(tags);
return tags;
}