JQuery - Perdida de datos en variables json

   
Vista:

Perdida de datos en variables json

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<!DOCTYPE html>
<html>
 
<head>
<script type="text/javascript" src="highcharts.js"></script>
<script type="text/javascript" src="jquery.min.js"></script>
 
<script>
 
var  latitud;
var longitud;
var url= "datos.json";
 
$.getJSON(url,
 
    function (data) {
 
      latitud= new Array();
      longitud =new Array();
 
      for (j=0;j<300;j++)
      {
          var valArray =  data[0].pos[j].d.split('|');
          console.log(valArray);
 
          latitud[j]= parseFloat(valArray[0]);
          longitud[j]= parseFloat(valArray[1]);
 
      }//Fin del for
 
    }//Fin de la funcion
 
    //Al salir de aqui pierdo la data de las variables; coomo haria para mantener dichos datos y usarlos en otras funciones?
);
 
for(i=0;i<latitud.length;i++)  // Quiero Mantener la data hasta este punto pero la pierdo al salir de la funcion
alert(latitud[i]);
 
</script>
 
</head>
 
<body>
 
</body>
</html>

Estoy aprendiendo a usar javascript y quisiera saber como hago para mantener la data de la variable de una funcion y asi poder poder usarla en otras funciones;
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

Perdida de datos en variables json

Publicado por xve (557 intervenciones) el 23/03/2016 08:55:54
El problema creo que es de concepto...

El bucle for que tienes, se ejecuta antes que finalice la llamada al getJSON, ya que no se detiene la ejecución del código para las peticiones AJAX.

Si quieres que el bucle for() haga uso de la respuesta AJAX, ponlo dentro del success del getJSON()
http://api.jquery.com/jQuery.getJSON/

No se si me he sabido explicar... coméntanos, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Perdida de datos en variables json

Publicado por Virgilio vikebm@gmail.com (4 intervenciones) el 23/03/2016 18:01:51
Te entiendo, La función me lee la data de mi archivo perfectamente, y se almacena lo q quiero en el array longitud y latitud, la pregunta es como yo haría para utilizar esa data q se guardo en mis arrays fuera de la función getjson!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Vainas

Perdida de datos en variables json

Publicado por Vainas (96 intervenciones) el 27/03/2016 20:04:36
Buenas:

Todo depende cuando la quieras usar. Lo que tienes que entender es que se ejecuta getJSON muy rapido y finaliza, asi que llega abajo antes de que se hayan obtenido los datos.

1
2
3
$.getJSON(url,function(){...});
// aqui llega muy rapido asi que lo que viene debajo no tiene aun el valor que quieres
for(i=0;i<latitud.length;i++){...}

Formas de hacerlo. Para mi 2:

1. Metes todo lo que quieres hacer dentro de la function de getJSONo creas una funcion que se ejecute depues de esto.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$.getJSON(url,
    function (data) {
      latitud= new Array();
      longitud =new Array();
      for (j=0;j<300;j++){
          var valArray =  data[0].pos[j].d.split('|');
          console.log(valArray);
           latitud[j]= parseFloat(valArray[0]);
          longitud[j]= parseFloat(valArray[1]);
      }//Fin del for
	ejecutaFor();
    }//Fin de la funcion
 
    //Al salir de aqui pierdo la data de las variables; coomo haria para mantener dichos datos y usarlos en otras funciones?
);
 
function ejecutaFor(){
	for(i=0;i<latitud.length;i++){
		alert(latitud[i]);
	}
}

2. Creas una variable que puedes leer para comprobar si ya hemos obtenido el valor. Es lo que se suele llamar un flag o bandera y simplemente antes de tu for compruebas si existe.

Todo esto se puede hacer con promesas en jQuery que puede ser un poco mas facil.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar