从AJAX响应中提取并执行脚本

Extract and execute scripts from AJAX response

本文关键字:执行 脚本 提取 AJAX 响应      更新时间:2023-09-26

我的AJAX响应返回如下内容:

<div>
..
</div>
<script type="text/javascript">
..
</script>
<script type="text/javascript">
..
</script>
<div>
..
</div>

我想从脚本标签执行脚本(应该跨浏览器工作),并插入文本(div)页后。

您的script标签不需要跨浏览器兼容的type="text/javascript"属性。

你的JavaScript将从上到下执行。所以无论哪个脚本先出现,都会先执行。最后添加文本插入,像这样:

HTML:

<div id="myDiv"></div>
JavaScript:

document.getElementById("myDiv").innerHTML = "hello";

从ajax响应中提取脚本通常是不好的做法(缓存、安全等)。最好处理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>元素到主体时,它应该被自动注册。

感谢大家。我创建了这样的解决方案:

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);
});