2011-08-24 48 views
1

所以,this question告訴我,jQuery的Ajax請求不插入腳本標籤到DOM,但jQuery的評估它們來代替。我正在將一些內容加載到div中,並且在該div中我有一些按鈕由AddThis提供。這些按鈕的代碼包含http://s7.addthis.com的腳本。 jQuery似乎沒有評估這個腳本,我沒有看到我的按鈕。它高興地評估來自我自己的域中的另一個腳本,該腳本在相同的請求中加載。jQuery AJAX請求不會評估其他域上的腳本?

有沒有辦法來告訴jQuery來評估來自其他域的腳本,或者是有一個很好的理由,這種行爲,這意味着我需要以不同的方式做到這一點?

感謝您的閱讀。

回答

2

jQuery's ajax方法提取了許多平臺和用例的具體細節,使得任何類型的異步web請求

可以調用ajax方法用的參數的各種組合,並且每一次,完全不同的工作流程將在幕後被執行(同義詞包括jQuery.get()jQuery.post()jQuery.getJSON()jQuery.getScript())。

在你正在請求一個網頁上爲當前頁面的同一個域的情況,然後jQuery將不使用<script>標籤,除非它是專門告訴(通過設置crossDomaintrue)。相反,它將使用傳統的AJAX方法;或者XMLHttpRequest Object(並回落到ActiveX的各種微軟實現)。

但是,如果你正在請求不同的域的情況下,它是不可能在所有現代瀏覽器使用這些方法由於same origin policy。在這種情況下,jQuery.ajax訴諸使用<script>標籤(該技術被命名爲JSONP)。

JSONP需要以特殊的方式來制定,從服務器的響應;即有效的JavaScript,你的迴應不是。需要注意的是JSONP 需要服務器在這個合作是很重要的。欲瞭解更多信息,請閱讀question/answerWikipedia

您的代碼正在處理您的域名,因爲它不要求從服務器的響應是有效的JavaScript(這是不是)。但是,當ajax()開始自動使用JSONP時,您不符合有效的JavaScript要求。