使用AJAX和Best的Best Buy API jQuery - 错误

时间:2011-08-05 20:44:15

标签: php jquery ajax json best-buy-api

正如this question的答案所说,我有这段代码来查询最佳购买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 / products(搜索=相机)?apiKey = myApiKey& format = json& callback = jQuery16209624163198750466_1312575558844'“

如果我遗漏“callback =?”当我在浏览器上访问它时,url返回产品就好了,但是在代码中它会抛出一个javascript错误:

“XMLHttpRequest无法加载http://api.remix.bestbuy.com/v1/products(search=camera)?apiKey=myApiKey&format=json。Access-Control-Allow-Origin不允许原点http://mysite.com。”

3 个答案:

答案 0 :(得分: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',

});

答案 1 :(得分: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');
    }
});

答案 2 :(得分:1)

Remix查询解析器无法处理JSON回调中的下划线。如果你有一个没有下划线的回调它应该工作。请记住,Remix缓存忽略了JSON回调的值,因此如果查询相同,除了回调已更改,您将获得缓存响应(即"无法理解......)。 "错误)。稍微更改查询,您将获得新的响应。