Tau*_*uir 4 javascript ajax jquery
我有一个来自某个域的js文件服务说 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 () {
}
})
}
});
Run Code Online (Sandbox Code Playgroud)
在barfoo.com一些网址上,我有这样的事情:
<script src='http://foobar.com/static/js/main.js' type='text/javascript'></script>
<script type='text/javascript'>foobar('123456')</script>
Run Code Online (Sandbox Code Playgroud)
当我点击那个网址时:它说
Uncaught ReferenceError:foobar is not defined (anonymous function)
Run Code Online (Sandbox Code Playgroud)
如何从其他域访问功能?
Poi*_*nty 11
你已经在"ready"处理程序中定义了"foobar()".因此它是该函数中的局部变量,并且在其外部是不可见的.
您可以将其添加到"ready"处理程序的末尾:
window['foobar'] = foobar;
Run Code Online (Sandbox Code Playgroud)
然后它在全球范围内可见.
顺便说一句,这是可以咬jsfiddle的东西,因为它(默认情况下)将代码包装在"加载"处理程序中.因此,如果您从包含在其中的JavaScript文件进行复制/粘贴<head>,那么在该上下文中将是全局的函数最终在小提琴中不是全局的.