2012-02-21 3 views
2

をレンダリングします。私はgetJSONのコールバックを発射することはできません。 jsonのフィードは公開され公開されているので問題ありません。これはjQuery 1.6.4 +モバイルの問題ですか?jqueryの:AjaxのJSONの単純な私は、単純なJSONフィードを取得し、学習運動としてそれを表示するには、モバイルでのjQuery 1.6.4を実行しようとしています

$.getJSON('https://raw.github.com/currencybot/open-exchange-rates/master/latest.json', 
     function (data) { 
     var items = []; 

     $.each(data, function (key, val) { 
      items.push('<li id="' + key + '">' + val + '</li>'); 
     }); 

     $('<ul/>', { 
      'class': 'my-new-list', 
      html: items.join('') 
     }).appendTo('body'); 
    }); 

答えて

3

それが同一生成元ポリシーに違反するため、このURLにAJAX要求を行うことができません。説明はhttp://e-mats.org/2010/01/jquery-getjson-and-the-same-origin-policy/を参照してください。 - そのようなJSONなど

外部ソースからのデータと簡単なマッシュアップを作成するとき、あなたは通常、適切な形式でデータを読みたい :ここに引用です。ジョブの ツールは、お好みの のブラウザで実行されている、javascriptをする傾向があります。唯一の問題は、XHR (XMLHttpRequest)で行われた要求が同じ発信元ポリシーに従わなければならないということです。 この要求は、ホストが元の要求を処理するホスト 以外のホストに存在するリソースに対して要求できません。または通常のJSON出力の簡単な 修正 - 通常JSONPを使用し、このクライアントを回避する

。データはまだJSONが、 出力は、ローカルブラウザのJavaScriptをトリガ要求、 の終わりに簡単コールバックを含みます。 データの作成者は、実際にそれが OKだと(非常に多くのハックの方法で)ブラウザに指示します。この方法では、私が実際に介してこれを考えました。あなた自身を助けてください。

基本的に、正規のAJAXは、同じドメインのセキュリティポリシーが適用されているXMLHtmlRequestを使用します。一方、JSONPは、コールバック関数を実行するスクリプトタグ(同じドメイン起源ポリシーなし)を挿入します。しかし、コールバック関数を使って実際にスクリプトを生成する責任があるため、エンドサーバはこれをサポートしなければなりません。

サーバーでJSONPがサポートされている場合は、getJSONを使用して呼び出すURLのリクエストパラメータにcallback=?を追加します。しかし、このエンドポイントがJSONPをサポートしているようには見えません(callback=?を追加すると何もしません)。

だから、おそらく、このデータにアクセスするには、サーバー上のプロキシエンドポイントを作成する必要があります。基本的には、独自のサーバー上にエンドポイントを作成し、意味のある方法(カールなど)を使用してそのデータをロードし、そのままそのまま返します。その後、通常のAJAXを使用して独自のサーバー・エンドポイントを呼び出すことができます(同じサーバー=同じ起点ポリシーに違反しません)。

関連する問題