javascript - ajax 与 src 脚本请求

标签 javascript jquery ajax

今天,当我探索 Google API 时,我在他们的示例代码中看到,他们只是通过执行以下操作来请求网址

<script src="src="https://www.googleapis.com/customsearch/v1?key=AIzaSyCVAXiUzRYsML1Pv6RwSG1.."></script>

对我来说很难过,在看到这个之前我的第一个想法是ajax。现在我很困惑,这与 2 不同。我无法执行上面的请求,因为我需要在其中添加用户的输入。

喜欢

"https://www.googleapis.com/customsearch/v1?key=AIzaSyCVAXiUzRYsML1Pv6RwSG1&"'+user+'"

那么如果我使用ajax,会达到同样的效果吗?抱歉,我没有尝试过,但即使我尝试了,我仍然很困惑它们之间的区别是什么。

最佳答案

使用<script src>检索 JSON 数据是一种称为 JSONP 的技术。它绕过了跨站点脚本限制(如果 AJAX 请求的域与其来自的页面不同,则浏览器可能会阻止 AJAX 请求;它不会阻止这种方式的脚本加载)。缺点是您不能执行其他 HTTP 方法(PUT、POST、DELETE 等)——只能执行 GET。另外,正如 @FelixKing 指出的那样,服务器必须支持它 - 如果您只是将 JSON blob 作为 <script> 的内容删除。元素,这不会给你带来任何好处 - 它必须被发送到回调。如果 API 支持 JSONP,通常需要 callback=functionName参数,发出的脚本将为 functionName({... JSON blob here ...}) .

但是,您仍然可以动态添加用户参数等内容。您只需要使用Javascript添加<script>元素添加到页面中,而不是将其硬编码到 HTML 中:

var user = "someone";
var scriptTag = document.createElement('script');
scriptTag.src = 
  "https://www.googleapis.com/customsearch/v1?key=AIzaSyCVAXiUzRYsML1Pv6RwSG1&user="+user
document.getElementsByTagName('html')[0].appendChild(scriptTag);

但我不知道你到底在做什么,或者该调用是否支持 JSONP;这只是使用 Javascript 动态添加 <script> 的示例元素。详细信息由您决定。

关于javascript - ajax 与 src 脚本请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25851158/

相关文章:

jquery - 使用jquery删除链接,但不删除图像

javascript - PrimeFaces 渲染的所有 JavaScript 是什么?

javascript - 动态创建 html div jinja2 和 ajax

javascript - 单击时显示更新值

javascript - 如何使用 jasmine 测试具有依赖关系的 Angular 服务?

javascript - 禁用 silverlight 加载屏幕

Javascript 整理嵌套函数

javascript - 在使用 javascript 单击按钮时不使用生成器函数即可获取序列中的下一个值

javascript - 如何使用 Google Chart 在 v 轴上显示基线值?

javascript - 如何使用 JQUERY 在 IF 中添加另一条语句