2009-07-08 98 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