estoy usando una función de envoltura alrededor de la función AJAX de jQuery como este error url no es válido Cuando una url no es válida, primero llama al error y luego a la función completa. Está bien. Pero cuando uso "script" como dataType, no llama nada cuando la url no es válida. ¿Qué debo hacer para detectar errores HTTP 404 y otros cuando uso "script" como dataType?jQuery ajax manejo con "guión" tipoDatos
5
A
Respuesta
1
He visto la fuente de jQuery y encontré que no llama a ningún método de manejo de errores. De hecho, llama a las funciones de éxito() y completar() solo cuando la solicitud de obtención de http es exitosa.
// If we're requesting a remote document
// and trying to load JSON or Script with a GET
if (s.dataType === "script" && type === "GET" && remote) {
var head = document.getElementsByTagName("head")[0] || document.documentElement;
var script = document.createElement("script");
script.src = s.url;
if (s.scriptCharset) {
script.charset = s.scriptCharset;
}
// Handle Script loading
if (!jsonp) {
var done = false;
// Attach handlers for all browsers
script.onload = script.onreadystatechange = function() {
if (!done && (!this.readyState ||
this.readyState === "loaded" || this.readyState === "complete")) {
done = true;
success();
complete();
// Handle memory leak in IE
script.onload = script.onreadystatechange = null;
if (head && script.parentNode) {
head.removeChild(script);
}
}
};
}
// Use insertBefore instead of appendChild to circumvent an IE6 bug.
// This arises when a base node is used (#2709 and #4378).
head.insertBefore(script, head.firstChild);
// We handle everything using the script element injection
return undefined;
}
0
Malas noticias: este problema aún no se resuelve en jquery 1.x. Buenas noticias: es resuelto en jquery 2.x (que no es compatible con IE < = 8). Logré que funcione mi devolución de llamada complete
, que recibe una notificación de error. Consulte here para obtener el código de jquery, o el fragmento relacionado:
send: function(_, complete) {
script = jQuery("<script>").prop({
async: true,
charset: s.scriptCharset,
src: s.url
}).on(
"load error",
callback = function(evt) {
script.remove();
callback = null;
if (evt) {
complete(evt.type === "error" ? 404 : 200, evt.type);
}
}
);
document.head.appendChild(script[ 0 ]);
},
Cuestiones relacionadas
- 1. .ajax $ - tipoDatos
- 2. jQuery Manejo de errores AJAX
- 3. error jQuery Ajax manejo de ignorar abortado
- 4. ajax cargado y el guión
- 5. jQuery Encuesta AJAX para respuesta JSON, manejo basado en el resultado AJAX o contenido JSON
- 6. jQuery AJAX y manejo de diferentes tipos de datos
- 7. jQuery AJAX con IE8
- 8. jquery validación con llamada ajax
- 9. Actualizar MYSQL con jQuery/AJAX
- 10. ASP.NET MVC AJAX con jQuery
- 11. Llamada Jquery/Ajax con temporizador
- 12. AJAX y jQuery con MVC
- 13. jQuery AJAX con dos dominios
- 14. Manejo de errores AJAX con jQuery: debería usar $ .ajaxSetup() o $ .fn.ajaxError()
- 15. Solicitud JSON con JQuery/Ajax con Spring
- 16. ¿Por qué "_" (guión bajo) coincide con "-" (guión)?
- 17. MVC con JQuery: manejo de la sesión vencer
- 18. Server-side ASP.Net Ajax manejo de excepciones
- 19. Manejo de salida de servlet en AJAX
- 20. Manejo de errores Ajax en CakePHP
- 21. Fuga de memoria con solicitudes AJAX + jQuery
- 22. ASP.Net MVC formulario Ajax con validación jQuery
- 23. Anula la solicitud JEAP ajax con jQuery
- 24. Cómo traer ajax buscar onkeyup con jQuery
- 25. Dashboard Dominio cruzado AJAX con jquery
- 26. jQuery autocompletar con múltiples valores ajax
- 27. Análisis de cadena HTML con Ajax/jQuery
- 28. JQuery UI autocompletar con json y ajax
- 29. Descarga de archivos JQuery con Ajax
- 30. Cargando fragmentos XHTML sobre AJAX con jQuery
¿Qué está utilizando para depurar? ¿Tiene acceso a Fiddler o Firebug para que pueda evaluar lo que se solicita y devuelve? Otra pregunta es: ¿está tratando de acceder a un recurso en un dominio diferente con su solicitud 'script'? –
Ni siquiera intento Firebug pero es una buena idea. El recurso está en un dominio diferente, pero puedo OBTENER un script desde un "dominio cruzado" – Pink
¿Qué sucede cuando se cambia el parámetro 'tipo' de 'script' a 'jsonp'? ¿Su éxito alerta fuego? –