【问题标题】:jQuery.getScript() fails to load functionjQuery.getScript() 加载函数失败
【发布时间】:2015-03-12 16:17:07
【问题描述】:

我正在尝试加载具有以下功能的脚本:

$.getScript('/js/mymy.js').done(function(){ 
    if(readCookie('my_cookie', 'yes')){
        /* do sth here */
    }
});

$.getScript('/js/mymy.js',function(){   
    if(readCookie('my_cookie', 'yes')){
        /* do sth here */
    }
});

其中“readCookie”在 mymy.js 中定义,但我收到错误“readCookie”未定义...

在这里12 是我得到帮助的地方,但它不起作用......有什么想法吗?

我确实使用 jQuery 1.8.0

mymy.js 确实包含一个函数:

jQuery(document).ready(function() {
  function readCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for (var i = 0; i < ca.length; i++) {
      var c = ca[i];
      while (c.charAt(0) == ' ') c = c.substring(1, c.length);
      if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
    }
    return null;
  }

  /** There is sth much more here **/
  ...
  /** There is sth much more here **/
});

【问题讨论】:

  • 你能把mymy.js的内容贴出来吗?
  • 添加了 readCookie 的定义
  • 谢谢,那个函数不在另一个函数中,对吧?
  • 它是 jQuery(document).ready(function() { }} 中的独立函数;
  • 那是您的问题,它在该文档就绪功能范围内。把它拿出来

标签: jquery function undefined getscript


【解决方案1】:

readCookie 未定义,因为readCookie 不是全局的;它仅在mymy.jsdocument.ready 函数范围内可见。

通过删除 document.ready 包装器使函数全局化。

【讨论】:

  • 最好也提一下它可能还没有被执行。
【解决方案2】:

来自the docs

一旦脚本被加载但不一定被执行,回调就会被触发。

换句话说,您不能依赖success 函数在加载的脚本执行之后显式调用,例如,将其函数放入全局范围。


在您编辑之后(IMO 应该是您首先发布的内容),您实际上有 两个 问题;正如所写,它的范围在 JQ 的 DOM-ready 函数中。)

【讨论】:

    猜你喜欢
    • 2016-07-13
    • 1970-01-01
    • 1970-01-01
    • 2018-01-26
    • 2018-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多