我正在尝试使用 youtube“api”进行搜索
http://suggestqueries.google.com/complete/search?q=INPUT&client=firefox&hl=cs
但网站会返回一个 content-disposition:attachment;
header ,并下载带有 JSON 响应的文件 (f.txt)。
有没有办法在 JavaScript 中以字符串形式获取 JSON?
(我确信有。Youtube 必须以某种方式做到这一点)
如果可能的话,请不要使用 jQuery。
最佳答案
不确定您如何尝试直接在浏览器中访问 API。那样的话是行不通的。对同一 API 进行 AJAX 调用,您将收到如下错误消息:
XMLHttpRequest cannot load http://suggestqueries.google.com/complete/search?q=india&client=firefox&hl=cs. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://null.jsbin.com' is therefore not allowed access.
原因?
因为这个API是针对google内部产品的,所以它不能正常工作。
跨域限制比较常见,基于 JSONP 的请求可以解决这个问题。
试试这个,
$.getJSON("http://suggestqueries.google.com/complete/search?callback=?",
{
"hl":"en",
"jsonp":"suggestCallBack",
"q":'ind', // query term
"client":"firefox"
});
suggestCallBack = function (data) {
console.log(data);
};
现在这是一个基于 JQuery 的解决方案,但是无需 JQuery 也可以轻松进行 AJAX 调用,但我从未尝试过在没有 JQuery 的情况下进行 JSONP 调用。
关于javascript - AJAX无法加载URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41314677/