2013-10-16 62 views
1

我正在嘗試使用JQuery/AJAX更新/插入新標記。在腳本標記中找到的URL是來自另一個域(Web服務器)的URL,我無法控制它。 Web服務器提供的結果在iframe中返回(同樣,我無法控制響應的格式)。問題使用JQuery/AJAX更新/插入<script>標記

我已經嘗試了以下兩種解決方案(請注意,單擊按鈕僅用於測試目的)。

第一解決方案:

$(document).ready(function() { 
    $("button").click(function() { 
     var NewScript = document.createElement('script'); 
     NewScript.type = 'text/javascript'; 
     NewScript.src = 'http://www.contactedurl.com/query&callback=?'; 
     $("#TDiv").append(NewScript); 
    }); 
}); 

第二解決方案:

$(document).ready(function() { 
    $("button").click(function() { 
     var NewScript = document.createElement('script'); 
     NewScript.type = 'text/javascript'; 
     NewScript.src = 'http://www.contactedurl.com/query&callback=?'; 
     var script = document.getElementsByTagName('script')[0]; 
     script.parentNode.insertBefore(NewScript, script); 
    }); 
}); 

這兩種解決方案的產生下面的警告消息,從而不執行更新:

甲從異步加載的外部腳本調用document.write()被忽略了。

我明白爲什麼會生成此消息的原因,以及爲什麼不執行更新,但我無法找到任何解決此限制或替代解決方案的方法。

我想知道是否有人會知道替代解決方案。

謝謝。

回答

0

你根本無法像你這樣做。你必須通常包含腳本。

<div> 
    <script src="http://www.contactedurl.com/query&callback=?"></script> 
</div> 

document.write(雖然這是很沒有意義的做這樣):

<div> 
    <script> 
     document.write("<scr"+"ipt src='http://www.contactedurl.com/query&callback=?'></scr"+"ipt>"); 
    </script> 
</div> 

其中<div>...</div>是你想要的輸出是。

+0

凱文喜一的Ajax簡寫爲。感謝您的時間和答覆。正如您已經證實的那樣,在嘗試了幾種解決方案並進行了一些閱讀之後,我得出結論說我沒有朝着正確的方向前進。不過,我認爲應該有一種替代方式來動態更改腳本Tag中的源URL,否? – JF0001

+0

問題不在於更改網址,問題在於腳本正在做什麼。 document.write()將完全替換文檔,如果它在文檔關閉後執行(發生在文檔*「就緒」*時,這就是爲什麼它必須同步執行。 –