通過Javascript請求,XMLHttpRequest
響應一些額外的Javascript,需要添加到頁面的請求頁面。執行使用包含腳本標記的XMLHttpRequest編寫的Javascript嗎?
使用eval(),如果響應是一樣的東西:
alert('This is the js response');
......那麼這工作得很好。
但是,文本返回可能是這個樣子:
<script language="javascript">var checkVar='checkVar: value 1';</script>
,但最有可能的:
<script src="http://www.somesite.com/setCheckVarValue.js"></script>
...其中附加的JS需要在頁面上加載。
我確保XMLHttpRequest
是synchronous
,因爲我想在此之後引用checkVar。
所以:
<script type="text/javascript" src="http://www.mysite.com/addJSToPage.js" />
// at this point, since this is a synchronous call, page processing waits
// until the response is received that needs to include the additional JS
// to load; this, for testing sets the value of checkVar
<script type="text/javascript" >
alert(checkVar);
</script>
警報消息應閱讀 「checkVar:值1」。
由於其他原因,這不僅僅如設置var checkVar in addJSToPaged.js
一樣簡單,所以我不在尋找那種推薦。
我使用alert(checkVar)只是作爲一個測試,以確保在響應中通過JS設置了一個值。
我想我可以去掉開始和結束的腳本標記,並保持這種做法。但是,我想知道是否有任何解決方案支持我所尋找的?
謝謝。
UPDATE
繼普拉香特的建議,在addJSToPage.js我說:
var dynamicElement = document.createElement('div');
然後從XMLHttpRequest的響應,我所做的:
dynamicElement.appendChild = xmlhttp.responseText;
仍然沒有看到checkVar的值。
您可能需要將其注入到DOM中,eval是邪惡的。在這種情況下,您可能需要回復該消息並對響應文本進行警報。 – Prashanth 2012-02-02 06:11:11
@Prashanth - 它不如一個警報那麼簡單;更新了描述,因爲響應將是一個JS引用來加載更多的JS。 – ElHaix 2012-02-02 06:33:13
對,將它注入到dom中,然後可以調用該函數。我想不出一個有效的用例,你需要用javascript來回應。 – Prashanth 2012-02-02 07:23:14