2011-01-23 67 views

回答

2

通常情況下,你會得到XMLHTTP請求響應爲純JavaScript,然後使用JavaScript eval()函數:

function callback() { 
    var result = xmlHttp.responseText; 
    eval(result); 
} 

在這種情況下,你不會把它當作HTML。相反,你會返回純代碼。不同的是:

不這樣做在你的頁面調用

<script type="text/javascript"> 
alert('xmlhttprequest loaded!'); 
</script> 

做到這一點,而不是

alert('xmlhttprequest loaded!'); 

這樣,實際上,這是發生了什麼:

function callback() { 
    var result = xmlHttp.responseText; 
    eval("alert('xmlhttprequest loaded!');"); 
} 

但是喲你不希望發生這種情況:

function callback() { 
    var result = xmlHttp.responseText; 
    eval("<script>alert('xmlhttprequest loaded!');</script>"); 
} 

這樣做有一些問題,如eval可能會很慢。谷歌JavaScript評估,看看別人不得不說。

===編輯===

使用DOM方法,而不是XMLHttpRequest的,實際上可能是什麼原海報需要在這裏做,這是動態加載谷歌的圖形驗證碼。

<html> 
<head></head> 
<body> 
<script type="text/javascript"> 

var head = document.getElementsByTagName('head')[0]; 
var script = document.createElement('script'); 
script.type = 'text/javascript'; 
script.src = "http://google.com/captcha/location"; 
head.appendChild(script); 

</script> 
</body> 
</html> 

此外,如果你需要它某處土地,你可以這樣做:

<html> 
<head></head> 
<body> 
<div id="captcha"> 
</div> 
<script type="text/javascript"> 

var captcha = document.getElementById('captcha'); 
var script = document.createElement('script'); 
script.type = 'text/javascript'; 
script.src = "http://google.com/captcha/location"; 
captcha.appendChild(script); 

</script> 
</body> 
</html> 
0

你可能想EVAL這個responseText在JavaScript。

你可能想確保這個responseText來自你自己的服務器端系統,以避免XSS攻擊。

相關問題