0

この質問への回答が示すように、ベストバイ API をクエリするためのコード ブロックがあります。

$.ajax({
    type: "GET",
    url: "http://api.remix.bestbuy.com/v1/products(search=camera)?apiKey=" + apiKey + "&format=json&callback=?",
    cache: true,
    success: function(data) {
        alert('success');
    },
    dataType: 'json'
});

コードは正常に実行されますが、best buy からエラー メッセージが返されます。

「'/v1/products(search=camera)?apiKey=myApiKey&format=json&callback=jQuery16209624163198750466_1312575558844' を理解できませんでした」

「callback=?」を省略した場合 ブラウザでURLにアクセスすると、URLは問題なく製品を返しますが、コードではjavascriptエラーがスローされます:

「XMLHttpRequest はhttp://api.remix.bestbuy.com/v1/products(search=camera)?apiKey=myApiKey&format=jsonを読み込めません。Origin http://mysite.comは Access-Control-Allow-Origin で許可されていません."

4

3 に答える 3

2

dataTypeに設定jsonp

$.ajax({
    type: "GET",
    url: "http://api.remix.bestbuy.com/v1/products(search=camera)?apiKey=" + apiKey + "&format=json",
    cache: false,
    crossDomain:true,
    success: function(data) {
        alert('success');
    },
    dataType: 'jsonp',

});
于 2011-08-05T20:46:43.463 に答える
1

Remix クエリ パーサーは、JSON コールバックでアンダースコアを処理できません。アンダースコアのないコールバックがある場合は、機能するはずです。Remix キャッシュは JSON コールバックの値を無視するため、コールバックが変更されていることを除いてクエリが同一である場合、キャッシュされた応答が返されることに注意してください (つまり、「理解できませんでした . . .」エラー)。クエリを少し変更すると、新しい応答が得られます。

于 2014-07-29T22:00:12.257 に答える
1

更新:解決策が見つかりましたが、理想的ではありません。私はむしろphpを使いたくないのですが、うまくいきます。

データを取得するphpファイルがあります:

$requestUrl="http://api.remix.bestbuy.com/v1/products(search=camera)?format=json&apiKey={$apiKey}";
$data=file_get_contents($requestUrl);
echo $data;

次に、jquery でそのファイルを取得します。

$.ajax({
    url: "js/getBestBuy.php",
    dataType: "json",
    success: function(data) {
        alert('success');
    }
});
于 2011-08-08T18:27:49.253 に答える