jQuery.getScript() fails to load function

北慕城南 提交于 2019-12-04 05:28:41

问题


I am trying to load a script with a function like:

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

or

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

where "readCookie" is defined in mymy.js but i get an error "readCookie" is not defined...

Here 1 & 2 is where i have got help how to do, but it does not work... Any Ideas?

i do use jQuery 1.8.0

mymy.js does contain a function:

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 **/
});

回答1:


readCookie is undefined because readCookie is not global; it is visible only within the document.ready function scope in mymy.js.

Make the function global by removing the document.ready wrapper.




回答2:


From the docs:

The callback is fired once the script has been loaded but not necessarily executed.

In other words, you cannot rely on the success function to be called explicitly after the loaded script is executed, e.g., its functions put into the global scope.


After your edit (which IMO should have been what you posted first) you actually have two issues; as written it's scoped only inside JQ's DOM-ready function.)



来源:https://stackoverflow.com/questions/29014968/jquery-getscript-fails-to-load-function

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!