タイトルにあるように、サイトから提供されたAPIからjsonを取得しようとしています。私は今、さまざまなことを試し、さまざまな結果を得ています。jsonを取得して解析し、必要な情報を取得できるようにしたいと考えています。これが私が試したことです:
1)$ .ajax()コードチャンク(ボタンがクリックされたときに実行されます):
$.ajax({
type: 'GET',
url: url,
dataType: 'json',
success: function(data) {
alert('Success!');
}
});
これにより、「OriginnullはAccess-Control-Allow-Originで許可されていません」が生成されます。エラーが発生し、サーバーからの応答がありません(ChromeまたはFFの場合、これは私の使用する小さなプロジェクトであるため、IEについては気にしません)。周りを見回すと、外部のWebサイトに接続しようとしているので、jsonpdataTypeである必要があるのではないかと思いました。これで私は#2を試してみました
2)jsonpdataTypeを使用した$.ajax
$.ajax({
type: 'GET',
url: url,
dataType: 'jsonp',
success: function(data) {
alert('Success!');
}
});
「&callback =?」も追加しました 関数に与える「url」の最後まで。Chromの開発ツールを使用すると、今回はサーバーからの応答を確認できますが、アラートは表示されません。JSONLINTを使用して、応答が適切なjson(つまり)であることを確認し、jsonを変数に設定して、それを試してみました(スクリプトタグの前半で変数を初期化する行に沿って[var response; ]そしてjsonをそれに割り当てようとしています[response=data;])。これは、alert(response)を試みたときに未定義を生成しました。後で(response = jsonとは思わない;何らかの理由でビットが呼び出されたことはありません)。
私も$.getJSONを使用してみましたが、そのAPIを見ると、とにかく$ .ajaxを実行しているようです($。 )。jsonp Chromeとして試してみると(FFはこのエラーを生成しません)、「予期しない構文エラー:予期しないトークン:」が表示されます。これにより、私が話そうとしているサイトでjsonpが機能しておらず、jsonリクエストとしてサードパーティのサイトにアクセスできないと思います。このリンクでは、応答から得られるように、サーバーをtext/htmlではなくapplication/jsonとして返すように設定することで、問題を修正する方法について説明しています(ただし、サードパーティのサイトにアクセスしようとしているため、サーバーにアクセスしないでください)。
私はこれをChromeとFFで試し、それぞれのDev Tools / Firebugを調べて、同じことを確認しました(FFは元のエラーを生成しませんが、それは明らかにChromeのバグです)。
また、返されたjson応答を取得し、その上で$ .parseJSONを実行して、さまざまな部分を取得できましたが、$。ajax / $。getJSONが機能するようになったら、どうすればjsonにアクセスできますか?
任意の考え/解決策をいただければ幸いです。