正如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。”
答案 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回调的值,因此如果查询相同,除了回调已更改,您将获得缓存响应(即"无法理解......)。 "错误)。稍微更改查询,您将获得新的响应。