função de erro jquery ajax
por exemplo:
cache: false,
url: "addInterview_Code.asp",
type: "POST",
datatype: "text",
data: strData,
success: function (html) {
alert('successful : ' + html);
$("#result").html("Successful");
},
error: function (error) {
**alert('error; ' + eval(error));**
}
É a parte do erro que não entendo. Na função que parâmetro eu preciso colocar, para que eu possa então usar a mensagem de erro que eu levantei no servidor.
7 answers
Os parâmetros necessários numa função Ajax error
são jqXHR, exception
e pode usá-la como abaixo:
$.ajax({
url: 'some_unknown_page.html',
success: function (response) {
$('#post').html(response.responseText);
},
error: function (jqXHR, exception) {
var msg = '';
if (jqXHR.status === 0) {
msg = 'Not connect.\n Verify Network.';
} else if (jqXHR.status == 404) {
msg = 'Requested page not found. [404]';
} else if (jqXHR.status == 500) {
msg = 'Internal Server Error [500].';
} else if (exception === 'parsererror') {
msg = 'Requested JSON parse failed.';
} else if (exception === 'timeout') {
msg = 'Time out error.';
} else if (exception === 'abort') {
msg = 'Ajax request aborted.';
} else {
msg = 'Uncaught Error.\n' + jqXHR.responseText;
}
$('#post').html(msg);
},
});
Parâmetros
JqXHR:
Na verdade é um objecto de erro que se parece com este
Você também pode ver isto na sua consola do navegador, usando console.log
dentro da função error
Como:
error: function (jqXHR, exception) {
console.log(jqXHR);
// Your error handling logic here..
}
Estamos a usar a propriedade status
deste objecto para obter o código de erro, como se tivéssemos status = 404 isso significa que a página solicitada não poderia ser encontrada. Não existe mesmo. Com base nesse código de Estado, podemos redirecionar os usuários para a página de login ou o que a nossa lógica de negócios requer.
Excepção:
Esta é a variável string que mostra o tipo de excepção. Então, se estamos recebendo 404 erro, exception
texto seria simplesmente 'erro'. Da mesma forma, podemos ter 'tempo-limite', 'abortar' como outros textos de exceção.
Comunicação de Informações:
jqXHR.success()
,jqXHR.error()
, e os callbacks são depreciados a partir de jquery 1.8. Preparar o seu código para a sua eventual remoção, usejqXHR.done()
,jqXHR.fail()
, ejqXHR.always()
em vez disso.
Então, no caso de você estar usando jQuery 1.8 ou acima {[27] } vamos precisar atualizar a lógica de função de sucesso e erro Como: -
// Assign handlers immediately after making the request,
// and remember the jqXHR object for this request
var jqxhr = $.ajax("some_unknown_page.html")
.done(function (response) {
// success logic here
$('#post').html(response.responseText);
})
.fail(function (jqXHR, exception) {
// Our error logic here
var msg = '';
if (jqXHR.status === 0) {
msg = 'Not connect.\n Verify Network.';
} else if (jqXHR.status == 404) {
msg = 'Requested page not found. [404]';
} else if (jqXHR.status == 500) {
msg = 'Internal Server Error [500].';
} else if (exception === 'parsererror') {
msg = 'Requested JSON parse failed.';
} else if (exception === 'timeout') {
msg = 'Time out error.';
} else if (exception === 'abort') {
msg = 'Ajax request aborted.';
} else {
msg = 'Uncaught Error.\n' + jqXHR.responseText;
}
$('#post').html(msg);
})
.always(function () {
alert("complete");
});
Espero que ajude!
Tenta isto:
error: function(jqXHR, textStatus, errorThrown) {
console.log(textStatus, errorThrown);
}
Se quiser informar a sua interface sobre um erro de validação, tente devolver o json:
dataType: 'json',
success: function(data, textStatus, jqXHR) {
console.log(data.error);
}
O teu programa asp schould volta:
{"error": true}
Aqui está como você puxa o erro de asp para fora.
cache: false,
url: "addInterview_Code.asp",
type: "POST",
datatype: "text",
data: strData,
success: function (html) {
alert('successful : ' + html);
$("#result").html("Successful");
},
error: function (jqXHR, textStatus, errorThrown) {
if (jqXHR.status == 500) {
alert('Internal error: ' + jqXHR.responseText);
} else {
alert('Unexpected error.');
}
}
cache: false,
url: "addInterview_Code.asp",
type: "POST",
datatype: "text",
data: strData,
success: function (html) {
alert('successful : ' + html);
$("#result").html("Successful");
},
error: function(data, errorThrown)
{
alert('request failed :'+errorThrown);
}
Estás a usar uma função
error(error)
Mas o jquery está à procura de uma função com três parâmetros:
error(jqXHR, textStatus, errorThrown)
Tens de adicionar mais dois parâmetros.
Também: por favor, dê uma olhada em todos os comentários acima que mencionam 'depreciado':)
$.ajax("www.stackoverflow.com/api/whatever", {
dataType:"JSON"
data: { id=1, name='example' }
}).succes(function (result) {
// use result
}).error(function (jqXHR, textStatus, errorThrown) {
// handle error
});
error(jqXHR, textStatus, errorThrown)
De jquery.com:
The jqXHR.success(), jqXHR.error(), and jqXHR.complete()
callback methods introduced injQuery 1.5 are deprecated
as of jQuery 1.8. To prepare your code for their eventual
removal, use jqXHR.done(), jqXHR.fail(), and jqXHR.always() instead.
Se quiser manipuladores globais, pode usar:
.ajaxStart(), .ajaxStop(),
.ajaxComplete(), .ajaxError(),
.ajaxSuccess(), .ajaxSend()