0

私はJQueryにかなり慣れていません。以下のコードは機能し、Firebug で正しい JSON 応答を確認できます。しかし、コードでそれを取得して解析する方法が見つかりませんでした。アラート ウィンドウに「[object Object]」のみが表示され、json テキストは表示されません。

<script>

$.ajaxSetup({ cache: false });

var _token;

function make_token_auth(user, token) {
  var tok = user + ':' + token;
  return "Token " + tok;
}


$.ajax
  ({
    type: "GET",
    url: "url",
    dataType: 'json',    
    beforeSend: function (xhr){ 
        xhr.setRequestHeader('Auth', make_token_auth('userid', 'token')); 
    },
    success: function (data){
        alert(data); 
    }
});

</script>
4

5 に答える 5

3

あなたが正確に言った事実

dataType: 'json',    

受信した回答を解析し、それを JavaScript オブジェクトとして成功コールバックに渡すように jQuery に指示します。

したがって、ここにあるものは問題なく、アラートされるものは正しいです (これはオブジェクトであるため、 アラートは単純に の結果を出力しdata.toString()ます)。

console.logそれが正確に何であるかを確認するために使用します。

success: function (data){
    console.log(data); 
}

Chromeで開発者ツールを開くか、Firebug でコンソールを開いて、オブジェクトのプロパティを参照します。

于 2013-01-07T15:58:02.497 に答える
3

デバッグには使用alert()しないでください。(この場合のように) 役に立たないことが多く、非同期コード (つまり、Ajax など) で使用すると、プログラム フローが中断されるため、深刻な問題が発生します。

console.log()ブラウザのまたはconsole.dir()関数を使用して、コンソールに表示されたオブジェクトを確認する方がはるかに優れています。これははるかに機能的であり、プログラムの流れを中断しません。

alert(myjsonvar)したがって、使用する代わりにconsole.log(myjsonvar).

于 2013-01-07T15:59:53.823 に答える
1

このalert関数では、文字列または数値を渡す必要があります。

次のようにしてみてください。

for(x in data) {
    alert(x + ': ' + data[x]);
}

コメントに応じて更新:開発または運用でアラートを使用して、サーバー側のコードによって返されたオブジェクトの文字列と数値を確認できます。

ただし、質問を注意深く読み直すと、本当に見たいのは実際の JSON テキストのようです。上記の @dystroy の回答を見るとdataType: 'json'、$.ajax の呼び出しから を削除すると、jQuery は応答を自動的にオブジェクトに変換するのではなく、プレーン テキストとして扱うと思います。この場合、テキストをalert関数に渡すことでテキストを表示できます。

于 2013-01-07T15:58:10.870 に答える
1

を使用してjson文字列を取得できますJSON.stringify

var jsonstr = JSON.stringify(data);
alert(jsonstr);
于 2013-01-07T16:00:33.147 に答える
0

使ってみて

data = JSON.parse(data)

次に、データに対して必要なことを行います。

ソース: JSON.parse() (MDN)

于 2013-01-07T16:40:09.493 に答える