【问题标题】:Load external script using getScript shows undefined使用 getScript 加载外部脚本显示未定义
【发布时间】:2019-06-04 18:19:22
【问题描述】:

我试图使用$.getScript 在我的 HTML 中获取外部 JS 文件。但是它返回undefined

然后我尝试使用https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js,它也显示相同,undefined

$(function() {
  $.getScript("https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js", function(data, textStatus, jqxhr) {
    alert(data); // undefined
    alert(textStatus); // Success
    alert(jqxhr.status); // 200
    alert("Load was performed.");
  });
});

还有其他方法可以加载外部脚本吗?

【问题讨论】:

  • 你可以像世界其他地方一样使用脚本标签
  • 你正在使用 jquery 加载一个 jquery 实例,为什么?
  • 您遇到same origin policy 问题了吗?您正在加载的脚本是否托管在运行该脚本的同一域中?
  • @madalinivascu 我只是在尝试一个示例网址。实际网址不同。
  • 使用<script> 标签没有同源约束...使用getScript 确实(尽管文档实际上并没有说明)。见this answer

标签: jquery


【解决方案1】:

在cmets中提出以下问题后...

您是否遇到了同源政策问题?您正在加载的脚本是否托管在运行该脚本的同一域中?

...以及来自 OP 的响应...

我们只是包含脚本,对吗?在那种情况下,同样的起源是否重要?无论如何,当我点击浏览器时,url正在加载

... 让我相信 OP 正在尝试从不同的域加载脚本。

使用<script> 标签没有same-origin policy 约束,这意味着您可以从任何地方加载脚本。

但是,jquery getScript 功能确实 有约束(尽管文档中没有提到),这意味着您可以从同一域加载脚本(除非您设置了CORS)。

【讨论】:

  • 谢谢。但我只是检查了一下。 Access-Control-Allow-Headers * Access-Control-Allow-Origin * 。控制台中也没有 CORS 错误/变暖。
  • 只是为了确认...标题设置在哪里?它们必须在外部域中
  • 是的,它在外部域上
  • 很公平 - 那么我无法解释你得到了什么,抱歉。
猜你喜欢
  • 2013-01-17
  • 1970-01-01
  • 2019-06-29
  • 1970-01-01
  • 1970-01-01
  • 2013-12-12
  • 2016-02-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多