【问题标题】:AJAX cant load URLAJAX 无法加载 URL
【发布时间】:2016-12-24 15:46:32
【问题描述】:

我正在尝试使用 youtube“api”进行搜索

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

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

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

(我确定有。Youtube 必须以某种方式做到这一点)

如果可能,请不要使用 jQuery。

【问题讨论】:

    标签: javascript ajax string file attachment


    【解决方案1】:

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

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

    原因?

    因为这个 API 是为谷歌内部产品设计的,所以它不能正常工作。

    跨域限制比较常见,基于 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 调用。

    【讨论】:

    • 谢谢。我已经阅读了关于需要 JSONP 的信息,所以我要寻找一种在没有 jQuery 的情况下进行此类调用的方法。如果我找不到它,我会接受我的网站因为加载速度变慢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-09
    • 2018-02-12
    • 2019-04-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多