在JavaScript变量上添加JSON输出的值,在循环或异步上失败
Add values from JSON output on JavaScript variable, fail on Loop or Async?
我需要从JSON中获取数组lenguajes[]的语言并存储在"custom_lenguajes"变量中,但我没有得到。
JSON输出:{
- data:
[
- {
DT_RowId: "row_93",
idiomas: "Si",
site: "342800010",
lenguajes:
[
- {
id: "3",
code: "nl"
},
- {
id: "5",
code: "ja"
},
- {
id: "17",
code: "de"
},
- {
id: "19",
code: "en"
},
- {
id: "38",
code: "ru"
}
]
}
],
options:
{},
files: [ ]
}
JS代码:
var custom_lenguajes ="";
$(document).on('pageinit', '#page-1', function() {
// get lenguajes. START
$.getJSON( parser_origin + "/_country/spain/v134/lacarte.restaurants.front/alacarte/php/languages.front.php", { site: id_establecimiento()}, function(data){
for (var i=0, len=data.length; i < len; i++) {
console.log(data[i]);
}
data = data['data'];
data3 = data;
});
// I need create a variable that acummulate languages from JSON, this way: "nl,ja,de,en,ru"
$.each(data3, function(entryIndex, entry) {
$.each(this.lenguajes, function() {
alert(this.code); // don't show nothing. ONLY TEST
custom_lenguajes += this.code + "',";
console.log(custom_lenguajes); //show "". ONLY TEST
});
});
// get lenguajes. END
...
For your help:
- 如果我使用console.log(data3);(在我的代码)我可以看到一个空对象"[]"控制台chrome,当加载页面
- 之后,(当页面加载时),如果我在控制台chrome上写:data3[0].lenguajes[0]。代码,显示的是"n "在chrome控制台看它的工作,但不是我的代码。
你做错了什么?是一个问题与我的循环或ASYNC?
欢迎任何帮助!谢谢你! !
Javascript是异步的,这意味着它不会等待您的ajax $.getJson()
函数在尝试进入$.each()
循环之前完成。试着把你的循环放到$.getJson()
函数里面。
var custom_lenguajes ="";
$(document).on('pageinit', '#page-1', function() {
// get lenguajes. START
$.getJSON( parser_origin + "/_country/spain/v134/lacarte.restaurants.front/alacarte/php/languages.front.php", { site: id_establecimiento()}, function(data){
for (var i=0, len=data.length; i < len; i++) {
console.log(data[i]);
}
data = data['data'];
data3 = data;
$.each(data3, function(entryIndex, entry) {
$.each(this.lenguajes, function() {
alert(this.code); // don't show nothing. ONLY TEST
custom_lenguajes += this.code + "',";
console.log(custom_lenguajes); //show "". ONLY TEST
});
});
});
});
谢谢你的帮助。
是的,你的注释方向很好($.getJSON内的循环),现在它工作了!!最终有效的代码:
$.getJSON( parser_origin + "/_country/spain/v134/lacarte.restaurants.front/alacarte/php/languages.front.php", { site: id_establecimiento()}, function(data){
for (var i=0, len=data.length; i < len; i++) {
console.log(data[i]);
}
data = data['data'];
data3 = data;
// I need create a variable that acummulate languages from JSON: "nl,ja,de,en,ru"
$.each(data3, function(entryIndex, entry) {
$.each(this.lenguajes, function() {
//alert(this.code); // ONLY TEST
custom_lenguajes += this.code + "',";
//console.log(custom_lenguajes); //ONLY TEST
});
});
});// end $.getJSON
相关文章:
- 在window.print()中加载为循环指令而编译时准备DOM失败
- js角度按钮保持循环失败
- 在for循环中使用setTimeout失败
- 循环遍历所有字段,如果任何一个字段的验证失败jquery,则返回false
- 循环遍历 ArrayController 失败,因为它不是数组,即使控制器具有正确的数据模型也是如此
- 断言失败:#each 循环的值必须是数组余烬 js
- javascript:将键从for循环传递到另一个函数失败
- 循环通过函数会导致错误,并在第一次更改时失败
- 循环使用Ajax的函数.仅在IE中失败.其他浏览器都能正常工作
- 在所有跨度上循环并更新一个失败的whit JQuery
- Javascript正则表达式失败(循环?)
- Javascript和JSON.子数组循环失败
- 我的for循环内输出分叉失败
- Insertbefore()在循环中只添加第一行,在其他行上失败
- jQuery animate()在setTimeout()循环后失败
- Foreach循环javascript失败
- file_put_contents上的循环偶尔会触发“打开流失败”.警告
- 在Javascript (PhoneGap)中使用循环向文件写入10行失败
- Javascript中的循环函数在与perl数组组合时失败
- PHP循环中的SQL查询在第n次迭代后失败