2012-07-09 33 views
5

Tôi gặp phải sự cố lạ khi cố gắng phân tích chuỗi JSON trong phản hồi jQuery AJAX. Đây là mã của tôi:Firefox không thể phân tích cú pháp chuỗi JSON trong phản hồi jQuery AJAX

$.ajax({ 
    type: "POST", 
    url: "Save", 
    data: { 
     expiry: expiry, 
     settings: settings 
    } 
}).done(function (msg) { 
    alert(msg); 
    var obj = jQuery.parseJSON(msg); 
    if (obj.status == "done") { 
     window.location = obj.redirect; 
    } 
}); 

Mở trình duyệt IE, Chrome, và Safari, tôi nhận được JSON chuỗi trong tỉnh táo, nhưng trên Firefox, Tôi nhận được

[obj XMLDocument]

trong cảnh báo.

Đây là FF console:

enter image description here

obj là null, nhưng tôi có thể thấy phản ứng JSON chuỗi trong giao diện điều khiển dưới thuộc tính văn bản

responses=Object { xml=document, text="{"status":"done","redir...ippetImage\/s\/6abb68"} 

Bất kỳ lý do cho hành vi này ?

Trả lời

5

Sự cố ở phía servlet. Tôi đã phải thiết lập contentType để làm cho nó hoạt động.

response.setContentType("text/JSON"); 
1

Đó không phải là chuỗi JSON hợp lệ. Một chuỗi JSON là, cho tất cả các ý định và mục đích, chỉ đơn giản là phía bên tay phải của một bài tập trong JS.

ví dụ:

var x = 7; 
     ^
var y = [1,2,3]; 
     ^^^^^^^ 
var z = {a:'b', c: 'd'}; 
     ^^^^^^^^^^^^^^^ 

Các bộ phận được chỉ định bởi ^ tương ứng với những gì bạn nhận được nếu bạn chuyển đổi x/y/z vars thành chuỗi JSON.

Nếu bạn không thể viết chuỗi json của mình làm bài tập JS, ví dụ:

var x = ...json_string_here...; 

thì đó không phải là JSON hợp lệ. Đoạn mã của bạn được viết xuống:

var x = responses=Object { .... } 

là lỗi cú pháp.

+0

thì tại sao nó hoạt động tốt trên các trình duyệt khác? – JAVAGeek

+0

Có lẽ trùng hợp ngẫu nhiên. Thực tế là nó hoạt động trên các trình duyệt khác không có nghĩa là nó là JSoN thích hợp. – WhyNotHugo

+0

'{" trạng thái ":" thực hiện "," chuyển hướng ":" some_url "}' có phải là vấn đề của chúng với chuỗi json này không? – JAVAGeek

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