【问题标题】:Sending variable to $.getScript将变量发送到 $.getScript
【发布时间】:2012-11-15 10:58:08
【问题描述】:

是否可以向使用$.getScript 加载的脚本发送变量?

目前我有:

$.getScript( "js/my_script.js", function() {
// do something here after script has loaded
});

但我想向加载的脚本发送一个变量。这可能吗,如果可以,怎么做?

例如

// this is a variable set outside of the script loaded via `$.getScript`
var my_variable = 1

// how do I get that variable sent to `my_script.js`
$.getScript( "my_script.js", function() {
// do something here after script has loaded
});

【问题讨论】:

  • 如果$.getScript 不支持参数/变量,您可以尝试使用$_GET 变量,例如:$.getScript( "js/my_script.js?my_variable=1",..。不知道它是否有效,但值得一试。

标签: jquery getscript


【解决方案1】:

jQuery.getScript():

脚本在全局上下文中执行,因此它可以引用其他变量并使用jQuery函数。

从文档看来,您的变量应该可以在$.getScript(function(){..}) 调用中访问。因此,这可能是 范围 的问题。您的变量 my_variable 存在(可能)在 $(document).ready(function(){...}) 中,因此仅限于该特定范围。

通过将数据分配给窗口对象来尝试使用 全局 变量:

// Set it as a global variable by assigning it to the window object
window.my_variable = 'some value';

// Now use it inside of $.getScript()
$.getScript( "my_script.js", function() {
  // Access it by name
  alert(my_variable);
  // or as a property of window
  alert(window.my_variable);
  // both ways to access my_variable work and are valid.
}

来源:老问题here 和$.getScript 文档here
在我的个人服务器上验证。

【讨论】:

  • 刚刚试了一下,效果很好。问题正是您所说的,即变量在$(document).ready(function(){...}) 中。把它移到外面,它开始工作了!谢谢。
  • 谢谢,我没有意识到ready函数的作用域和window不同,但是听人说,很有道理。
【解决方案2】:

您可以将包含的文件放入函数中,然后运行

    $.getScript(url, function() {
       functionName(params);
    });

【讨论】:

    【解决方案3】:

    这里要小心 - javascript 都是关于 4 维思考的(马蒂!)。 $.getScript 是异步的,因此调用可能会在脚本加载之前立即返回。如果您要加载多个脚本并且需要向每个脚本传递一些内容,那么您将不得不使用不同的变量。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-21
      • 2011-10-17
      • 2015-03-10
      • 2016-08-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多