2

ajax 呼び出しによって返される json は次のとおりです。

{
    "StumbleUpon": 0,
    "Reddit": 0,
    "Facebook": {
        "commentsbox_count": 0,
        "click_count": 0,
        "total_count": 0,
        "comment_count": 0,
        "like_count": 0,
        "share_count": 0
    },
    "Delicious": 0,
    "GooglePlusOne": 1,
    "Buzz": 0,
    "Twitter": 1,
    "Diggs": 0,
    "Pinterest": 0,
    "LinkedIn": 1
}

jqueryで処理しようとしているのですが、なぜか理解できず、 Facebook.total_count が定義されていません。上記の json を受信したことがコンソールに表示されるので、別の方法を期待します。さらに、他のすべて (data.Twitter など) が機能します。エラーが発生したコールバック関数を次に示します。私は何を間違っていますか?

function(data){

                console.log(data);
//this line throws the error
                var fb = data.Facebook;
                var total = parseInt(data.Twitter + parseInt(fb.total_count) + data.GooglePlusOne + data.Pinterest + data.LinkedIn);
// rest of code.
}

jsFiddleのコードを参照してください。

4

2 に答える 2

5

基本的に、そのコードは機能します-dataすでに逆シリアル化されている場合に限ります。そうでない場合も...

...通話dataType: "JSON"に追加:ajax

$.ajax({
    // ...
    dataType: "JSON",
    // ...
});

...または$.parseJSON結果に使用します。

function(data) {
    if (typeof data === "string") {
        data = $.parseJSON(data);
    }
    // ...
}

注:これらの番号を使用する必要はありませんparseInt。これらの番号はすでにJSONの番号であり、正しく逆シリアル化されます。

于 2012-07-24T13:07:14.617 に答える
0

JSONを文字列として受け取っていることがわかりますが、実際のオブジェクトに解析していません。このページには、実際にふるいにかけて正確に伝えるには多すぎますが、これが問題のようです. jQuery.parseJSONを試す

于 2012-07-24T12:58:47.520 に答える