Đối tượng jqXHR của jQuery được chuyển đến cuộc gọi lại không thành công không phân tích các câu trả lời của json, do đó responseJSON không có sẵn responseText.jquery ajax không phân tích cú pháp json trên thất bại
Nó hoạt động tốt cho các yêu cầu thành công, tôi đang thiết lập các tiêu đề chính xác sử dụng dataType: 'json'
Gọi:
$.ajax({
type: 'POST',
url: $form.attr('action'),
data: post_data,
dataType: 'json',
done: done_callback,
fail: fail_callback,
always: always_callback
});
Request Headers:
Accept:application/json, text/javascript, */*; q=0.01
X-Requested-With:XMLHttpRequest
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.83 Safari/535.11
Tiêu đề phản hồi:
Content-Type:application/json;charset=utf-8
Status:500
.210
responseText:
{"status":"error","code":500,"message":"A system error occurred, please try again later"}
responseJSON là undefined
Đó có phải là trường hợp đó jQuery không phân tích json khi đáp ứng với yêu cầu ajax không thành công? tôi không thể tìm thấy bất kỳ tài liệu hướng dẫn để xác nhận hoặc phủ nhận hành vi này (Tôi có thể chỉ là không nhìn cứng đủ)
tôi có thể rõ ràng là chỉ cần sử dụng parseJSON
trong fail
gọi lại.
Bạn nói đúng. Nội dung phản hồi không phải là 'eval'ed do lỗi. Nếu bạn nhận được JSON trên 500 lỗi, bạn chỉ cần phân tích cú pháp đó. – Strelok
có. @ Khởi động khá đúng chỉ cho tôi dòng chính xác mà jquery đã đưa ra quyết định này không để vượt qua các phản ứng thông qua các loại chuyển đổi. – Rob