Wysyłam odpowiedź błędu do mojego jQuery. Jednak nie mogę uzyskać tekstu odpowiedzi (w poniższym przykładzie byłoby to Gone to the beach )
Jedyne, co mówi jQuery, to „błąd”.
Zobacz ten przykład, aby uzyskać szczegółowe informacje:
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 ! ");
}
});
Teraz mój wynik to:
log:
[XMLHttpRequest readyState=4 status=500, "error", undefined]
alarm:
Nie można tego zrobić, ponieważ: błąd
Jakieś pomysły?
php
javascript
jquery
ajax
error-handling
jantimon
źródło
źródło
header
funkcja to obsługuje?$.ajax()
wywołuje przekazaną mu funkcję błędu.Odpowiedzi:
Próbować:
źródło
eval
jest ZŁEM ... stackoverflow.com/questions/646597/…eval
tutaj nie ma większego sensu. Jeśli chcesz przeanalizować odpowiedź JSON, użyjJSON.parse
. W przypadku OP odpowiedź nie jest nawet JSON ani JavaScript, więceval
po prostu spowoduje błąd SyntaxError.xhr
jest zdefiniowanyDla mnie to po prostu działa:
źródło
Spójrz na
responseText
właściwość parametru żądania.źródło
Jak ostatecznie sugeruje inna odpowiedź i komentarze na tej stronie:
źródło
To działało dla mnie
źródło
Pozwoli ci to zobaczyć całą odpowiedź, a nie tylko wartość „responseText”
źródło
możesz też spróbować:
źródło
Jeśli chcesz otrzymać błąd składni z numerem linii, użyj tego
źródło
Najlepsze proste podejście:
źródło
Użyłem tego i działało idealnie.
źródło
Jeśli nie masz błędu sieci i chcesz ujawnić błąd z zaplecza, na przykład niewystarczające uprawnienia, podaj odpowiedź 200 z komunikatem o błędzie. Następnie w module obsługi sukcesu sprawdź data.status == 'error'
źródło
fail
metodę zamiastdone
metody. Wszystkie żądania zwracają obiekt zawierający obiekt „status” z kodem i komunikatem.