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'
});

代码运行良好,但从百思买返回错误消息:

“无法理解 '/v1/products(search=camera)?apiKey=myApiKey&format=json&callback=jQuery16209624163198750466_1312575558844'”

如果我遗漏“回调=?” 当我在浏览器上访问它时,该 url 会很好地返回产品,但在代码中它会引发 javascript 错误:

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

4

3 回答 3

2

设置dataTypejsonp

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

更新:找到了解决方案,但并不理想。我宁愿不使用 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 回答
1

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

于 2014-07-29T22:00:12.257 回答