2011-08-05 1 views
0

this questionへの答えは、私はベストバイのAPIを照会するためのコードブロックを持って言うように:ベストバイの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' 
}); 

コードが細かい実行されますが、からのエラーメッセージを返しますベストバイ:

"理解できませんでした '?/ V1 /製品(検索=カメラを)APIKEY = myApiKey &形式= JSON &コールバック= jQuery16209624163198750466_1312575558844'"

「コールバック=?」を省略した場合私は、ブラウザ上でそれに行くときのURLは、製品がうまく返しますが、コードでは、JavaScriptのエラーがスローされます。

「XMLHttpRequestをロードすることはできませんhttp://api.remix.bestbuy.com/v1/products(search=camera)?apiKey=myApiKey&format=json起源http://mysite.comは、アクセス制御 - 許可 - 起源によって許可されていません。 "

答えて

1

jsonpへ:は解決策を見つけましたが、それは理想的ではありません。私はむしろPHPを使用しないだろうが、それは動作します。リミックスクエリパーサはJSONコールバックにアンダースコアを扱うことができない

$.ajax({ 
    url: "js/getBestBuy.php", 
    dataType: "json", 
    success: function(data) { 
     alert('success'); 
    } 
}); 
2

セットdataType更新

$.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', 

}); 
+0

残念ながら私のためには機能しません。コードが実行されていますが、「理解できませんでした」というエラーが発生しました – Juliet

+0

'crossDomain'を' true'に設定しようとしました。 – Rafay

+0

crossDomainの異なる組み合わせを試してみました:trueとデータ型:jsonpまたはデータ型: 。それでもこれらの2つのエラーのいずれかが発生する – Juliet

1

:次に

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

私はjQueryを使ってそのファイルをつかむ:

は、私がデータをつかむPHPファイルを持っています。アンダースコアのないコールバックがある場合はうまくいくはずです。リミックスキャッシュはJSONコールバックの値を無視するので、コールバックが変更されている以外はクエリが同じであれば、キャッシュされたレスポンス(つまり、「could not understand ...」エラー)が出ます。クエリを少し変更すると、新しい応答が得られます。