Como posso apanhar os erros do jQuery AJAX?
Quando um pedido do AJAX é submetido a um site, os erros do lado do servidor são facilmente tratados com a abordagem da promessa do jQuery.
.done()
, .fail()
, etc. No entanto, para alguns pedidos (por exemplo, para um site inválido ou um que não aceita pedidos de origem cruzada), uma exceção ocorre imediatamente à medida que a chamada é feita. Aqui está um exemplo de um erro na consola:
Sim, eu sei. sobre o CORS...não é essa a questão. O que estou realmente a fazer é tentar uma chamada da API web para testar se o IP/nome do servidor está correctoO XMLHttpRequest não consegue carregar
http://someotherserver/api/blahblah
. Origemhttp://localhost:52625
não é permitido pelo Access-Control-Allow-Origin.
Estou ciente da opção error
na sintaxe do pedido de jQuery:
$.ajax({
url: remoteURL,
type: 'GET',
error: function (err) {
console.log("AJAX error in request: " + JSON.stringify(err, null, 2));
}
}).etc.etc.
o erro é tratado aqui, mas as excepções ainda estão registadas na consola. Parecia razoável embrulhar o acima num bloco, mas isso não parece ajudar.
Encontrei esta pergunta, mas a solução envolve hackear o código jQuery. Certamente há um melhor maneira de apanhar estes erros e não entupir os registos da consola?? 17
2 answers
Tenta isto:
$.ajax({
url: remoteURL,
type: 'GET',
error: function (err) {
console.log("AJAX error in request: " + JSON.stringify(err, null, 2));
}
}).always(function(jqXHR, textStatus) {
if (textStatus != "success") {
alert("Error: " + jqXHR.statusText);
}
});
Ouvinte XHR:
$.ajax({
url: remoteURL,
type: 'GET',
xhr: function(){
var xhr = new window.XMLHttpRequest();
xhr.addEventListener("error", function(evt){
alert("an error occured");
}, false);
xhr.addEventListener("abort", function(){
alert("cancelled");
}, false);
return xhr;
},
error: function (err) {
console.log("AJAX error in request: " + JSON.stringify(err, null, 2));
}
});
7
Author: Mr.Manhattan, 2013-09-18 07:24:15
Pode usar a consola de programadores web no google chrome. Press F12. E use a página Redes para verificar a resposta, e para javasvript e erros jQuery e Ajax você pode usar a página Console. :)
Tente isto adicionando à sua função ajax:
error: function(XMLHttpRequest, textStatus, errorThrown) {
alert(errorThrown);
3
Author: Shreejibawa, 2013-09-19 04:57:55