我的AJAX響應返回是這樣的:提取和執行腳本
<div>
..
</div>
<script type="text/javascript">
..
</script>
<script type="text/javascript">
..
</script>
<div>
..
</div>
我想以後執行從腳本標記腳本(應該工作的跨browserly)和插入文本(div的)頁。
我的AJAX響應返回是這樣的:提取和執行腳本
<div>
..
</div>
<script type="text/javascript">
..
</script>
<script type="text/javascript">
..
</script>
<div>
..
</div>
我想以後執行從腳本標記腳本(應該工作的跨browserly)和插入文本(div的)頁。
感謝所有。 我創造了這樣的解決方案:
var scripts = [];
$(response).each(function(key, element){
if ($(element).is('script')) {
scripts.push(element.innerHTML);
} else {
$('test').append($(element));
}
});
$.each(scripts, function(key, element){
eval(element);
});
您的script
標記不需要type="text/javascript"
屬性以實現跨瀏覽器兼容性。
而你的JavaScript將自上而下執行。所以無論腳本先來,都會先執行。最後添加您的文本插入,這樣的事情:
HTML:
<div id="myDiv"></div>
的JavaScript:從Ajax響應
document.getElementById("myDiv").innerHTML = "hello";
關於這一點,' text/javascript'是Netscape自'腳本'的默認類型;) – MMM 2013-04-25 14:11:12
提取腳本通常是不好的做法(緩存,安全性,...) 。 處理Ajax響應中返回的數據(JSON)會更好。考慮使用JQuery或其他框架,因爲它們提供了跨瀏覽器功能和DOM操作內置。
請參見下面的DOM操作例如:
$(document).ready(function() {
var $grouplist = $('#groups');
$.each(myData, function() {
$('<li>' + this.name + '</li>').appendTo($grouplist);
});
});
@http://jsfiddle.net/qmacro/NJMyD/
如果你想留在沒有框架的原生功能,javascript中提供了本地的DOM操作功能,可能是瀏覽器的依賴。
當您向身體添加新的<javascript>
元素時,它應該被自動註冊。
新'
好jQuery的有建於... – epascarello 2013-04-25 13:24:24
嘗試[.load()](http://api.jquery.com/load/) – 2013-04-25 13:25:21