我正在尝试使用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中的承诺不同。
任何人都知道为什么会这样吗?
感谢。
答案 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而是使用标记进行的,因此回调中的数据和成功对象不可用。