2011-08-16 38 views
10

Tôi muốn biết cách chúng tôi có thể lấy mã trạng thái ajax trong jquery. Tôi có khối ajax này:cách lấy mã trạng thái jquery ajax

$.ajax{ 
    type: "GET", 
    url: "keyword_mapping.html", 
    data:"ajax=yes&sf="+status_flag, 

    success: callback.success, 
    complete: rollup_filters(), 
    failure: function(){ 
     alert("Failure"); 
    } 
    } 

Bây giờ trong đoạn mã trên, trong trường hợp thất bại, làm thế nào tôi có thể nhận được mã trạng thái ajax và một số mô tả rằng mã trạng thái ??

+1

có một cái nhìn tại [tài liệu] (http://api.jquery.com/jQuery.ajax/). –

Trả lời

11

Bạn muốn sử dụng tùy chọn error để nắm bắt điều này. Ví dụ:

error: function (jqXHR, textStatus, errorThrown) 
    // Your handler here... 
} 

Bạn có thể sử dụng đối tượng jqXHR để truy xuất thông tin về lỗi.

From the documentation:

Đối với khả năng tương thích ngược với XMLHttpRequest, một đối tượng jqXHR sẽ phơi bày các thuộc tính sau và phương pháp:

  • readyState
  • tình trạng
  • statusText
  • responseXML và/hoặc responseText khi yêu cầu cơ bản được trả lời bằng xml và/hoặc văn bản, tương ứng
  • setRequestHeader (tên, giá trị) mà khởi hành từ tiêu chuẩn bằng cách thay thế các giá trị cũ bằng cái mới chứ không phải là concatenating các giá trị mới cho người già một
  • getAllResponseHeaders()
  • getResponseHeader()
  • hủy bỏ()
2

Thay đổi callback thất bại của bạn để

error:function (xhr, options, error){ 
    alert(xhr.status); 
    alert(error); 
} 
1

Chẳng gì failure trong cài đặt ajax là. Thay thế lỗi bằng lỗi và bạn nhận được 3 đối số trong cuộc gọi lại lỗi. Đối số đầu tiên là đối tượng xhr có thuộc tính trạng thái trong đó.

$.ajax{ 
    type: "GET", 
    url: "keyword_mapping.html", 
    data:"ajax=yes&sf="+status_flag, 

    success: callback.success; 
    complete: rollup_filters(), 
    error: function(jqXHR, textStatus, errorThrown){ 
     alert(jqXHR.status); 
    } 
    } 
3

Trước tiên, bạn có một vài lỗi cú pháp. Ở trên là một cuộc gọi phương thức, vì vậy nó cần phải làm theo $.ajax({ ... }); (với dấu ngoặc đơn).

Thứ hai, bạn muốn cung cấp thuộc tính lỗi như một phần của đối tượng, không bị lỗi (see docs để biết thêm thông tin).

Thứ ba, khi bạn liên kết với lỗi, bạn được cung cấp ba tham số: jqHXR, textState, errorThrow. Các đối số này sẽ cung cấp cho bạn chi tiết về cuộc gọi AJAX bị lỗi. (Cụ thể hơn, hãy thử jqXHR.status)

Hoặc, bạn cũng có thể liên kết với hàm $.ajaxError.


Cập nhật Để giữ này nhiều up-to-date, bây giờ bạn nên sau khi Deferred API (như jQuery 1.5), mà sẽ làm cho ràng buộc vào một cái gì đó lỗi nhìn giống như sau:

$.ajax({ /* options */ }) 
    .done(function(data, textStatus, jqXHR){ 
    // here you bind to a successful execution. 
    .fail(function(jqXHR, textStatus, errorThrown){ 
    // Here you can catch if something went wrong with the AJAX call. 
    }) 
    .always(function(){ 
    // here you can execute code after both (or either) of 
    // the above callbacks have executed. 
    }); 
+0

Được bỏ phiếu vì sử dụng .done() và .fail(). –

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