Estou enviando uma resposta de erro ao meu jQuery. No entanto, não consigo obter o texto da resposta (no exemplo abaixo, este foi para a praia )
A única coisa que o jQuery diz é 'erro'.
Veja este exemplo para detalhes:
php
<?
header('HTTP/1.1 500 Internal Server Error');
print "Gone to the beach"
?>
jQuery
$.ajax({
type: "post",
data: {id: 0},
cache: false,
url: "doIt.php",
dataType: "text",
error: function (request, error) {
console.log(arguments);
alert(" Can't do because: " + error);
},
success: function () {
alert(" Done ! ");
}
});
Agora meu resultado é:
registro:
[XMLHttpRequest readyState=4 status=500, "error", undefined]
alerta:
Não é possível fazer porque: erro
Alguma ideia?
php
javascript
jquery
ajax
error-handling
jantimon
fonte
fonte
header
função lida com isso?$.ajax()
chama a função de erro passada para ele.Respostas:
Experimentar:
fonte
eval
é EVIL ... stackoverflow.com/questions/646597/…eval
aqui não faz muito sentido. Se você deseja analisar uma resposta JSON, useJSON.parse
. No caso do OP, a resposta não é nem JSON ou JavaScript; portanto, vocêeval
causará um SyntaxError.xhr
é indefinidoPara mim, isso simplesmente funciona:
fonte
Veja a
responseText
propriedade do parâmetro request.fonte
Como sugerido por essa outra resposta e pelos comentários nesta página:
fonte
Isto é o que funcionou para mim
fonte
Isso permitirá que você veja toda a resposta, não apenas o valor "responseText"
fonte
você pode tentar também:
fonte
Se você deseja obter o erro de sintaxe com o número da linha, use este
fonte
A melhor abordagem simples:
fonte
Eu usei isso, e funcionou perfeitamente.
fonte
Se você não está tendo um erro de rede e deseja exibir um erro do back-end, por exemplo, privilégios insuficientes, servidor sua resposta com 200 e uma mensagem de erro. Em seguida, no seu manipulador de sucesso, verifique data.status == 'erro'
fonte
fail
método em vez dodone
método. Todas as solicitações retornam um objeto que contém um objeto 'status' com código e mensagem.