2011-10-21 19 views
0

Googleの金融情報をjsonオブジェクトに読み込もうとしています。jsonのJsonオブジェクトを読み取ることができません?

コードは以下の通りです:

  try { 
       $.getJSON("http://finance.google.com/finance/info?client=ig&q=NSE:GOLDBEES&jsoncallback=?",function(data){ 
        alert(data);//var jsondata = data; 
        //jsonobj = $.parseJSON(jsondata); 
        //alert(jsonobj[0].id); 
       }); 
      } catch(e) { 
       alert(e.toString()); 
      } 

私は放火犯

invalid label 
    "id": "4052464" 

にこのエラーのすべての時間を得続けるしかし、この情報を読み取ることができる方法はあります。私の最終的な目標は、サーバーサイドスクリプトを使用しないWindows 7ガジェットを作成することで、どのWindows 7システムからでも使用できます。

すべてのヘルプを評価してください。

ジョン

答えて

0

response from GoogleはJSON ... for some reason応答が無効になって、二大/年代を持っています。

このため、jQuery.getJSONはJSON応答を期待しているため使用できません。代わりに、jQuery.getを使用し、2つの先頭のスラッシュを削除した後にJSONを解析する必要があります。

jQuery.get('http://finance.google.com/finance/info?client=ig&q=NSE:GOLDBEES&jsoncallback=?', function (string) { 
    var validJson = string.slice(2); 
    var obj = jQuery.parseJSON(validJSON); 

    // use obj 
}); 

二つの追加のポイント:あなたがガジェットを終了し公開することはできませんので、あなたは、Windowsサイドバーhas been retired

  • リクエストのURLにjsoncallback=?は必要ありませんので、ノーJSONPは、使用されている

    1. 公式のギャラリーに。
  • +0

    &callback=?に@anyoneを解決するには? – Matt

    +0

    * "JSONPは使用されていません" *そのページは同じhttp:// finance.google.comの出所にない限り、getJSONを介してこのデータにアクセスすることはできません[SOP](http://en.wikipedia.org/wiki/Same_origin_policy))。 JSON-Pは実際にそのエンドポイントで利用可能ですが、Manuelが指摘しているように適切なパラメータを指定するだけで済みます。 –

    +0

    @ T.J.Crowder:Windowsサイドバーガジェットは、同じ起点ポリシーによって制限されません。 – Matt

    2

    レスポンスは有効ではありません(レスポンスの先頭には//が付いています)ので、jQueryは正しく解析することができません。なぜ-1:

    は変更&jsoncallback=?

    ので

    $.getJSON("http://finance.google.com/finance/info?client=ig&q=NSE:GOLDBEES&callback=?", function(data) { 
        alert(data) 
    }); 
    
    +0

    ...ドメイン間の問題を避けるために、Googleに有効なJSON-P応答を返すように指示します。 –

    +0

    私の投稿@ T.J.Crowderを終了するためのthnx ;-) hehe –

    +0

    これは完璧です!私はこのビットを "alert(data [0] .id)"に追加してコードを完成させました。 – johnanish

    関連する問題