Thursday, May 23, 2024
 Popular · Latest · Hot · Upcoming
169
rated 0 times [  170] [ 1]  / answers: 1 / hits: 15621  / 13 Years ago, mon, december 19, 2011, 12:00:00

I have this js file serving from some domain say foobar.com



at http://foobar.com/static/js/main.js:

$(document).ready(function() {
function foobar(bar){
$.ajax({
url: /site/foo/,
data: {'foo':bar},
dataType: jsonp,
crossdomain: !0,
success: function (data) {
alert(data);
},
error: function () {
}
})
}
});


On barfoo.com on some url, I have something like this:



<script src='http://foobar.com/static/js/main.js' type='text/javascript'></script>
<script type='text/javascript'>foobar('123456')</script>


When I hit that url : it says



Uncaught ReferenceError:foobar is not defined (anonymous function)


How to access function from other domains?


More From » jquery

 Answers
81

You've defined foobar() inside the ready handler. It's therefore a local variable in that function, and invisible outside it.



You could add this to the end of the ready handler:



  window['foobar'] = foobar;


and then it'd be visible globally.



By the way this is something that can bite at jsfiddle because it (by default) will wrap code in a load handler. Thus, if you copy/paste from a JavaScript file included in the <head>, a function that would be global in that context ends up not global in the fiddle.


[#88476] Sunday, December 18, 2011, 13 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
danae

Total Points: 26
Total Questions: 97
Total Answers: 112

Location: Oman
Member since Wed, Apr 12, 2023
1 Year ago
;