2009-07-08 117 views
5

我试图使用jQuery的getScript加入()来加载外部JavaScript,这样的数据变量:jQuery.getScript:回调未定义

$.getScript("http://api.recaptcha.net/js/recaptcha_ajax.js", function(data) { 
    window.alert(data); 
}); 

但随着警报窗口显示,在回调中的数据变量功能是不确定的,不像http://docs.jquery.com/Ajax/jQuery.getScript#urlcallback中承诺的那样。

任何人都知道这可能是为什么?

谢谢。

+0

我得到了同样的错误,我问过irc,但似乎没有人知道分数是多少。我正在等待邮件列表中的回复。 – YHVH 2009-07-10 11:29:07

回答

1

是的,它正在加载脚本,但奇怪的是数据变量是未定义的。但我试图从远程站点的脚本访问变量(RecaptchaStr_en)并且已定义。

$.getScript("http://api.recaptcha.net/js/recaptcha_ajax.js", function(data) { 
     window.alert(data); 
     alert($(RecaptchaStr_en)); 
    }); 
+0

您是否发现问题?我也一样。似乎是某处的竞争条件 – Instine 2012-01-26 17:49:08

3

如果你看一下,从源头上getScript加入(在jQuery-1.3.2.js线3338),你可以看到,文件是错在这里。数据参数用于发送数据查询字符串中的服务器,jQuery假定您不需要加载脚本;它用于,例如,getJSON。 getScript只是将数据硬编码为空,并自动为您检索所检索的脚本。

所以坏消息是文档是错误的。好消息是,你可能只是想评估脚本,所以你可能根本不需要回调。

1

相对路径即/Script/MyScript.js rhather比http://mywebsite.com/Script/MyScript.js

对于C海盗,没有什么错的文件,按预期工作只是加载你的脚本。 XMLHttpRequest不允许跨域请求,并且似乎即使将整个路径放入同一个域中,数据参数也是未定义的。

0

当您将dataType定义为脚本时,请求不是使用XMLHttpRequest而是使用标记进行的,因此回调中的数据和成功对象不可用。

+0

您可以添加参考吗? @Al。 – 2012-06-18 06:09:10