5

jQuery AJAX応答で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;
    }
});

IE、Chrome、Safariでは、アラートでJSON文字列を取得していますが、Firefoxでは取得しています

[obj XMLDocument]

アラートで。

FFコンソールは次のとおりです。

ここに画像の説明を入力してください

objはnullですが、コンソールのtext属性で応答JSON文字列を確認できます

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

この動作の理由は何ですか?

4

2 に答える 2

5

問題はサーブレット側にありました。それを機能させるには、contentTypeを設定する必要がありました。

response.setContentType("text/JSON");
于 2012-07-09T20:54:51.733 に答える
1

これは有効なJSON文字列ではありません。JSON文字列は、すべての目的と目的において、JSでの割り当ての右側にすぎません。

例えば

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

で示されている部分は^、x / y/z変数をJSON文字列に変換した場合に得られるものに対応しています。

json文字列をJS割り当てとして記述できない場合、たとえば

var x = ...json_string_here...;

その場合、それは有効なJSONではありません。スニペットは次のように要約されます。

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

これは構文エラーです。

于 2012-07-09T20:06:08.643 に答える