AJAX无法加载URL

时间:2016-12-24 15:46:32

标签: javascript ajax string file attachment

我正在尝试使用youtube" api"搜索

  

http://suggestqueries.google.com/complete/search?q=INPUT&client=firefox&hl=cs

但网站返回content-disposition: attachment;标头并下载带有JSON响应的文件(f.txt)。

有没有办法在javascript中获取JSON作为字符串?

(我确信有.Youtube必须以某种方式这样做)

jQuery-less请尽可能。

1 个答案:

答案 0 :(得分:0)

不确定您是如何尝试直接在浏览器中访问API的。它不会那样工作。对同一API进行AJAX调用,您将收到错误消息,

  

XMLHttpRequest无法加载http://suggestqueries.google.com/complete/search?q=india&client=firefox&hl=cs。 No' Access-Control-Allow-Origin'标头出现在请求的资源上。起源' http://null.jsbin.com'因此不允许访问。

原因?

因为此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调用。