JQuery - Problemas con JSON

   
Vista:

Problemas con JSON

Publicado por Alejandro (8 intervenciones) el 16/03/2016 15:03:15
Buenos días. Estoy creando un plugin para una web con jquery pero tengo problemas al recuperar el json de configuración.

Si ejecuto esto:

1
var store = $.getJSON(resourcePath).promise();

me da problemas y no me recupera el json. He comprobado que la ruta es correcta, pero sin embargo, si ejecuto esto:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
var store = {};
$.ajax({
	url: resourcePath,
	dataType: "json",
	async: false,
	success: function(data) {
		store = data;
	},
	error: function(error) {
		$.getJSON(resourcePath, function(data) {
			store = data;
		});
	}
});

entra por el success y me guarda correctamente el json.

¿ Alguien sabe porque puede ser ? Me interesaría hacerlo con el getJSON porque el ajax no se me ejecuta de forma sincrona...
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 Junior

Problemas con JSON

Publicado por Junior (1 intervención) el 17/03/2016 16:29:58
La forma correcta de emplear $.getJson es la siguiente, no con .promise().

1
2
3
4
5
6
$.getJSON(resourcePath,function(data){
      // Aqui vienen los datos 
 
}).error(function(){
    // Imprime los errores
});
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Vainas

Problemas con JSON

Publicado por Vainas (96 intervenciones) el 18/03/2016 20:26:57
Buenas:

No te da problemas. En realidad recupera el JSON pero no lo tratas.

Siempre esta bien mirar la documentacion aunque este en ingles: http://api.jquery.com/jquery.getjson/ que dice:

1
jQuery.getJSON( url [, data ] [, success ] )

se le pasa la url, la data como un objeto javascript o un string y luego la funcion como bien dice Junior.

Junior creo que ya no se usa .error sino .fail.

Hay un tema a destacar que es el uso de promesas. puede que esto no funcione:

1
var store = $.getJSON(resourcePath).promise();

por que jQuery desvuelve en el ajax la promesa sin tener que usar .promise() asi que el codigo puede quedar asi:

1
2
3
var store = $.getJSON(resourcePath)
store.done(function(){...});
store.fail(function(){...});

o bien todo seguido:

1
$.getJSON(resourcePath).done(function(){...}).fail(function(){...});

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