2012-07-09 10 views
5

Mam dziwny problem podczas próby parsowania ciągów JSON w odpowiedzi jQuery AJAX. Tu jest mój kodu:Firefox nie może zanalizować łańcucha JSON w odpowiedzi 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; 
    } 
}); 

na IE, Chrome i Safari, jestem coraz JSON ciąg w pogotowiu, ale na Firefox, jestem coraz

[obj XMLDocument]

we wpisie.

Oto konsola FF:

enter image description here

obj jest null, ale widzę odpowiedź JSON ciąg w konsoli pod atrybutu tekstowego

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

jakiejkolwiek przyczyny takiego zachowania ?

Odpowiedz

5

Problem był po stronie serwletu. Musiałem ustawić contentType, aby działał.

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

To nie jest prawidłowy ciąg JSON. Łańcuch JSON jest, po wszystkich zamiarach i celach, po prostu prawą stroną przypisania w JS.

np.

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

części wskazanych przez ^ odpowiadają co chcesz uzyskać, jeśli konwertowane X/Y/Z vars do ciągów JSON.

Jeśli nie możesz napisać łańcucha json jako przypisania JS, np.

var x = ...json_string_here...; 

to nie jest prawidłowy JSON. Twój krótki opis sprowadza się do:

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

co jest błędem składni.

+0

to dlaczego działa dobrze na innych przeglądarkach? – JAVAGeek

+0

Prawdopodobieństwo koincydencji. Fakt, że działa on w innych przeglądarkach, nie oznacza, że ​​jest to właściwe JSoN. – WhyNotHugo

+0

'{" status ":" done "," redirect ":" some_url "}' "to ich problem z tym ciągiem JSON? – JAVAGeek

Powiązane problemy