¿Cómo puede manejar los errores en una llamada getJSON? Estoy tratando de hacer referencia a un servicio de script entre dominios utilizando jsonp, ¿cómo se registra un método de error?
jquery
cross-domain
jsonp
getjson
Ajay
fuente
fuente
Respuestas:
$.getJSON()
es una especie de abstracción de una llamada AJAX normal en la que tendría que decir que desea una respuesta codificada JSON.Puede manejar los errores de dos maneras: genéricamente (configurando sus llamadas AJAX antes de llamarlas realmente) o específicamente (con la cadena de métodos).
'genérico' sería algo así como:
Y la forma 'específica':
fuente
JSONP
en los que parece quegetJSON
en ese caso no llama a laerror()
función. Estoy teniendo el mismo problema. Supongo que tiene que ver con cómoJSONP
se maneja de manera totalmente diferente a lasAJAX
llamadas normales ajQuery
pesar degetJSON
manejar ambas.JSON
se realiza con unXMLHTTPRequest
objeto peroJSONP
se agrega dinámicamente una<script>
etiqueta a la páginaHEAD
.Alguien le da estos puntos a Luciano :) Acabo de probar su respuesta, tenía una pregunta similar, y funcionó perfectamente ...
Incluso agrego mis 50 centavos:
fuente
Aquí está mi adición.
De http://www.learnjavascript.co.uk/jq/reference/ajax/getjson.html y la fuente oficial
" Los métodos de devolución de llamada jqXHR.success (), jqXHR.error () y jqXHR.complete () introducidos en jQuery 1.5 están en desuso a partir de jQuery 1.8. Para preparar su código para su eventual eliminación, use jqXHR.done (), jqXHR .fail () y jqXHR.always () en su lugar " .
Lo hice y aquí está el fragmento de código actualizado de Luciano:
Y con la descripción del error más mostrar todos los datos json como una cadena:
Si no le gustan las alertas, sustitúyalas por
console.log
fuente
Sé que ha pasado un tiempo desde que alguien respondió aquí y el cartel probablemente ya recibió su respuesta, ya sea de aquí o de otro lugar. Sin embargo, creo que esta publicación ayudará a cualquiera que busque una forma de realizar un seguimiento de los errores y los tiempos de espera al hacer solicitudes getJSON. Por lo tanto debajo de mi respuesta a la pregunta
La estructura getJSON es la siguiente (que se encuentra en http://api.jqueri.com ):
la mayoría de las personas implementan eso usando
donde usan la var url para proporcionar un enlace a los datos JSON, los datos terminan como un lugar para agregar las
"?callback=?"
otras variables que deben enviarse para obtener los datos JSON correctos y la función de éxito como función para procesar los datos .Sin embargo, puede agregar el estado y las variables xhr en su función de éxito. La variable de estado contiene una de las siguientes cadenas: "éxito", "no modificado", "error", "tiempo de espera" o "parsererror", y la variable xhr contiene el objeto XMLHttpRequest devuelto (que se encuentra en w3schools )
De esta manera, es fácil realizar un seguimiento de los tiempos de espera y los errores sin tener que implementar un rastreador de tiempo de espera personalizado que se inicia una vez que se realiza una solicitud.
Espero que esto ayude a alguien que todavía está buscando una respuesta a esta pregunta.
fuente
Está arreglado en jQuery 2.x; En jQuery 1.x nunca recibirá una devolución de llamada de error
fuente
Me enfrenté a este mismo problema, pero en lugar de crear devoluciones de llamada para una solicitud fallida, simplemente devolví un error con el objeto de datos json.
Si es posible, esta parece ser la solución más fácil. Aquí hay una muestra del código Python que utilicé. (Usando Flask, jsonify f de Flask y SQLAlchemy)
Luego puede verificar Javascript de esta manera;
fuente
Por qué no
??
Para obtener detalles sobre el
.fail()
método utilizado (jQuery 1.5+), consulte http://api.jquery.com/jQuery.ajax/#jqXHRComo la
jqXHR
función devuelve el, un encadenamiento comoes posible.
fuente
En algunos casos, puede encontrarse con un problema de sincronización con este método. Escribí la llamada de devolución de llamada dentro de un
setTimeout
función, y funcionó sincrónicamente bien =)P.EJ:
fuente