2011-09-15 33 views
7

Tôi đang làm việc trên kết nối giữa web phía trước và dịch vụ nghỉ ngơi. Tôi đã thành công khi thực hiện cuộc gọi Ajax tên miền chéo nhưng tôi vẫn gặp sự cố nhỏ.không thể nhận được responseText khi có lỗi 400

Không thể nhận phản hồi khi xuất hiện lỗi 400.

Tôi đã xác minh với wireshark và tôi chắc chắn responseText đã được gửi bởi REST. Nhưng khi tôi nhìn vào firebug tôi đã này:

POST http: api.yutagz.com người dùng 400 Bad Request 133ms

Object {readyState = 0, status = 0, statusText = "error" responseText = ""}

Yêu cầu '400 Bad' là ok, nhưng tôi cần responseText để nói cho người dùng biết điều gì thực sự xảy ra.

Đây là mã cuộc gọi của tôi (làm việc trên sự kiện thành công):

$.ajax({ 
type: "POST", 
url : "http://api.yutagz.com/users", 
data: dataString, 
dataType: 'json', 
success : function(data,data1,data2){ 
    alert("OK : "+data); 
    console.log(data2); 
}, 
error:function (xhr){ 
    alert(JSON.stringify(xhr)); 
    console.log(xhr); 
    switch (xhr.status) { 
     case 404: alert("404"); 
     case 400: alert("400"); 
      // Take action, referencing xhr.responseText as needed. 
    } 
}, 
complete : function (xhr){ 
    alert(JSON.stringify(xhr)); 
    console.log(xhr); 
    switch (xhr.status) { 
     case 404: alert("404"); 
     case 400: alert("400"); 
      // Take action, referencing xhr.responseText as needed. 
    } 
} 
}); 

Dưới đây là một thử nghiệm (làm việc với Chrome nhưng không phải với firefox 3.6):

http://jsfiddle.net/RTvQQ/

Và đây một Vé jQuery:

http://bugs.jquery.com/ticket/7868

+0

Trong Chrome, tính năng này hoạt động tốt cho tôi. Tôi nhận được: "{" lỗi ": {" type ":" badRequest "," message ":" errorUserEmailMissing "}}" –

+0

Nó hoạt động với Firefox 5, tôi vừa mới thử nghiệm. Nhưng những gì đang xảy ra với 3.6 –

Trả lời

1

tôi thấy trong Chrome 13:

Và trong FF6:

Vì vậy, chỉ cần sử dụng error.message và đi từ đó.

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