Viktor
Viktor

Reputation: 633

jQuery.getScript() fails to load function

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

Upvotes: 1

Views: 1914

Answers (2)

Miguel
Miguel

Reputation: 20633

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.

Upvotes: 3

Dave Newton
Dave Newton

Reputation: 160311

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.)

Upvotes: 1

Related Questions