2012-07-09 13 views
5

jQueryのAJAXレスポンスでJSON文字列を解析しようとすると、奇妙な問題が発生します。ここに私のコードです:IE、クロム、およびSafariでjQueryのAJAXレスポンスでFirefoxがJSON文字列を解析できない

$.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; 
    } 
}); 

、私は警告でJSON文字列を取得していますが、Firefoxの上で、私は警告で

[obj XMLDocument]

を取得しています。ここで

はFFコンソールです:

enter image description here

objがnullのですが、私は、この動作のためのテキスト属性の下にコンソールに

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

いかなる理由がレスポンスJSON文字列を見ることができます?

答えて

5

サーブレット側に問題がありました。 contentTypeを設定して動作させる必要がありました。

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

これは有効なJSON文字列ではありません。 JSON文字列は、すべての目的と目的のために、JS内の代入の右辺です。

^で示さ

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

部品を使用すると、X/Y/Zは、JSON文字列に変換しvarsの場合は、取得したいものに対応しています。

jsonの文字列をJSの割り当てとして書き込めない場合は、次のようになります。

var x = ...json_string_here...; 

有効なJSONではありません。あなたのスニペットは次のようになります。

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

これは構文エラーです。

+0

なぜ他のブラウザで正常に動作していますか? – JAVAGeek

+0

おそらく一致します。他のブラウザでも動作するということは、JSoNが適切であるということではありません。 – WhyNotHugo

+0

'{" status ":" done "、" redirect ":" some_url "}'はこのJSON文字列の問題ですか? – JAVAGeek

関連する問題