jQuery.getScript:回调中的数据变量未定义

时间:2009-07-08 07:54:26

标签: jquery ajax

我正在尝试使用jQuery的getScript()加载外部JavaScript,如下所示:

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

但是正如警报窗口所示,回调函数中的数据变量是未定义的,与http://docs.jquery.com/Ajax/jQuery.getScript#urlcallback中的承诺不同。

任何人都知道为什么会这样吗?

感谢。

4 个答案:

答案 0 :(得分:3)

如果您查看getScript的源代码(jQuery-1.3.2.js中的第3338行),您可以在此处看到文档错误。 data参数用于在查询字符串中将数据发送到服务器,jQuery假定您不需要加载脚本;它用于,例如,getJSON。 getScript只是将数据硬编码为null,并自动为您检索检索到的脚本。

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

只需使用相对路径加载脚本,即/Script/MyScript.js 比http://mywebsite.com/Script/MyScript.js

更重要

对于C Pirate,文档没有任何错误,按预期工作。 XMLHttpRequest不允许跨域请求,即使您将整个路径放入同一个域,似乎数据参数也未定义。

答案 3 :(得分:0)

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