read from data jquery json error-handling silent

from - json jquery html



¿Por qué $.getJSON falla silenciosamente? (5)

Debería echar un vistazo a los documentos de esta API ... tiene un .error.

$.getJSON

Parece muy inconveniente que $.getJSON jQuery $.getJSON silenciosamente cuando los datos devueltos no son JSON válidos. ¿Por qué se implementó esto con un fallo silencioso? ¿Cuál es la forma más fácil de realizar getJSON con un mejor comportamiento de falla (por ejemplo, lanzar una excepción, console.log() , o lo que sea)?


Directamente de la documentación:

Importante: a partir de jQuery 1.4, si el archivo JSON contiene un error de sintaxis, la solicitud generalmente fallará en silencio.

Como dice la página de documentación, getJSON es simplemente un método abreviado para

$.ajax({ url: url, dataType: ''json'', data: data, success: callback });

Para obtener un comportamiento de falla, puede usar $ .ajax de esta manera:

$.ajax({ url: url, dataType: ''json'', data: data, success: callback, error: another callback });


Puede usar api.jquery.com/jQuery.ajax lugar y configurar las opciones de dataType en "json". De la documentación:

"json": evalúa la respuesta como JSON y devuelve un objeto JavaScript. En jQuery 1.4, los datos de JSON se analizan de manera estricta; cualquier JSON con formato incorrecto se rechaza y se produce un error de análisis . (Consulte json.org para obtener más información sobre el formato JSON adecuado).


Si solicita JSONP como respuesta, obtendrá un error silencioso si no hay respuesta (por ejemplo, corte de red). Vea este hilo para más detalles.


puedes usar

function name() { $.getJSON("", function(d) { alert("success"); }).done(function(d) { alert("done"); }).fail(function(d) { alert("error"); }).always(function(d) { alert("complete"); }); }

Si desea ver la causa del error, use la versión completa

function name() { $.getJSON("", function(d) { alert("success"); }).fail( function(d, textStatus, error) { console.error("getJSON failed, status: " + textStatus + ", error: "+error) }); }

Si su JSON no está bien formado, verá algo como

getJSON failed, status: parsererror, error: SyntaxError: JSON Parse error: Unrecognized token ''/''

Si la URL es incorrecta, verá algo como

getJSON failed, status: error, error: Not Found

Si está intentando obtener JSON de otro dominio, violando la política del mismo origen , este enfoque devuelve un mensaje vacío. Tenga en cuenta que puede trabajar alrededor de la política del mismo origen utilizando JSONP (que tiene sus limitations ) o el método preferido de Intercambio de recursos de origen cruzado ( CORS ).