Necesito obtener cada uno de los lenguajes que hay en array lenguajes[] que vienen de JSON y almacenarlo en la variable "custom_lenguajes" , pero no lo consigo.
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
...
Mi sencillo diagnostico (FYI):
- Si uso console.log(data3); ( en mi codigo ) puedo ver un objeto vacio “[ ]” en console chrome, cuando se carga la pagina.
- Despues (cunado la pagian esta cargada) , si pongoen console chrome: data3[0].lenguajes[0].code , me muestra correctamente: "nl" . Parece que en chrome console "funciona", pero no enmi codigo.
- Estoy usando JSON que me viene de Datatable Editor (por si es de interes)
¿Que estoy haciendo mal? Es un problema con el loop, con ASYNC de ajax, otro?
Hola, creo que el problema puede ser por el tema del ASYNC de ajax.
He mirado en la documentación http://api.jquery.com/jquery.getjson/ y veo que utilizan la variable "data" dentro de la función getJSON. Así que yo probaría a meterlo en el misma función.
var custom_lenguajes = "";
// 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]);
}
// I need create a variable that acummulate languages from JSON, this way: "nl,ja,de,en,ru"
$.each(data['data'], 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
});
});
});
Era eso!!, ahora funciona!
Muchas gracias Aleix. Dejo el código que funciona:
// get languajes. 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: "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); //don't show nothing. ONLY TEST
});
});
});// end $.getJSON
Necesito obtener cada uno de los lenguajes que hay en array lenguajes[] que vienen de JSON y almacenarlo en la variable "custom_lenguajes" , pero no lo consigo.
JSON output:
{
- 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 code:
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
...
Mi sencillo diagnostico (FYI):
- Si uso console.log(data3); ( en mi codigo ) puedo ver un objeto vacio “[ ]” en console chrome, cuando se carga la pagina.
- Despues (cunado la pagian esta cargada) , si pongoen console chrome: data3[0].lenguajes[0].code , me muestra correctamente: "nl" . Parece que en chrome console "funciona", pero no enmi codigo.
- Estoy usando JSON que me viene de Datatable Editor (por si es de interes)
¿Que estoy haciendo mal? Es un problema con el loop, con ASYNC de ajax, otro?
Cualquier ayuda la agradezco,
Muchas gracias
29/06/2016 17:33
He mirado en la documentación http://api.jquery.com/jquery.getjson/ y veo que utilizan la variable "data" dentro de la función getJSON. Así que yo probaría a meterlo en el misma función.
var custom_lenguajes = "";
// 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]);
}
// I need create a variable that acummulate languages from JSON, this way: "nl,ja,de,en,ru"
$.each(data['data'], 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
});
});
});
30/06/2016 12:57
Muchas gracias Aleix. Dejo el código que funciona:
// get languajes. 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: "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); //don't show nothing. ONLY TEST
});
});
});// end $.getJSON
// get languajes. END