javascript - AJAX无法加载URL

标签 javascript ajax string file attachment

我正在尝试使用 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/

相关文章:

Ruby 解析字符串

javascript - 使用 !important 时 gulp-less 失败

javascript - JavaScript 中的 "x = x || {}"技术是什么——它如何影响这个 IIFE?

javascript - 为什么 Firefox 不喜欢 Facebook 登录弹出窗口?

使用 Node.js 进行 Ajax 文件上传

javascript - 无法读取循环内函数未定义的属性

java - 如何在 Java 中检查字符串是否包含回车符 (CR) 或换行符 (LF)

javascript - 根据起始坐标和预定义 Angular 在javascript中获取结束线坐标

javascript - 在表单提交时将客户端 HTML 表数据提取到服务器端 PHP 脚本

javascript - 更新前验证字段