2012-06-07 41 views
15

tôi có mã này:Capture 404 trạng thái với jQuery AJAX

$.ajax({ cache: false, 
    url: "/Admin/Contents/GetData", 
    data: { accountID: AccountID }, 
    success: function (data) { 
     $('#CityID').html(data); 
    }, 
    error: function (ajaxContext) { 
     alert(ajaxContext.responseText) 
    } 
}); 

tôi vẫn bối rối về ajaxContext và làm thế nào để nắm bắt 404 mã trở lại. Tuy nhiên tôi có một câu hỏi khác. Tôi đang đọc một cái gì đó về mã hóa với thành công và thất bại và không còn sử dụng lỗi trong các phiên bản gần đây của jQuery.

Vì vậy, tôi nên thay đổi mã của mình để sử dụng xong và không thành công. Làm thế nào sau đó tôi có thể kiểm tra một 404?

+0

Làm thế nào công việc này sẽ sử dụng .fail()? –

Trả lời

24

Thay thế hàm lỗi của bạn như sau ...

error:function (xhr, ajaxOptions, thrownError){ 
    if(xhr.status==404) { 
     alert(thrownError); 
    } 
} 
+0

Tôi đã có lỗi trước đây: chức năng (jqXHR, textStatus, errorThrown). là ajaxOptions chính xác. Nó có phải là textStatus không? – Alan2

+0

Làm việc cho tôi, không hiểu tại sao không, nhưng sẵn sàng được nói khác đi. – JayTee

+3

Chỉ muốn lưu ý rằng điều này sẽ không hoạt động trên các cuộc gọi tên miền chéo. Nó sẽ không âm thầm và các thông số gọi lại "hoàn thành" hoặc "lỗi" sẽ được thực thi. – Meogi

3

404 erros sẽ được xử lý bởi hàm ẩn danh được nối với thuộc tính error. Bất kỳ điều gì khác ngoài yêu cầu HTTP thành công đối với URL (tức là 2xx) sẽ kích hoạt phương pháp lỗi. Sau đây sẽ làm việc cho mục đích của bạn:

error : function(jqXHR, textStatus, errorThrown) { 
    if(jqXHR.status == 404 || errorThrown == 'Not Found') 
    { 
     console.log('There was a 404 error.'); 
    } 
} 

Khi họ đề cập đến loại bỏ các chức năng successerror trong tài liệu jQuery, họ đang đề cập đến những người trong lớp jqXHR, không phải là thuộc tính của $.ajax().

+0

Nhưng liệu mã hóa cho hàm ẩn danh đó của JayTee có chính xác không? Nỗ lực trước đây của tôi chỉ cần đặt một ajaxContent biến trong paranthasis sau khi chức năng. – Alan2

+0

Hàm gọi lại chấp nhận ba đối số: đối tượng jqXHR (trong jQuery 1.4.x, XMLHttpRequest), một chuỗi mô tả loại lỗi xảy ra và một đối tượng ngoại lệ tùy chọn. Khi xảy ra lỗi HTTP, errorThrown nhận được phần văn bản của trạng thái HTTP, chẳng hạn như "Không tìm thấy" hoặc "Lỗi máy chủ nội bộ". – BenM

+0

Tôi đã chỉnh sửa câu trả lời của mình để bao gồm cú pháp chính xác ... – BenM

Các vấn đề liên quan