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

时间:2013-04-25 13:18:12

标签: javascript jquery

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

<div>
..
</div>

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

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

<div>
..
</div>

我想从脚本标签执行脚本(应该以浏览器方式工作)并在页面之后插入文本(div)。

3 个答案:

答案 0 :(得分:0)

您的script代码不需要type="text/javascript"属性来实现跨浏览器兼容性。

您的JavaScript将从上到下执行。所以首先执行的任何脚本都将首先执行。最后添加文本插入,如下所示:

HTML:

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

JavaScript的:

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

答案 1 :(得分:0)

从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>元素时,它应该自动注册。

答案 2 :(得分:0)

感谢所有人。 我创建了这样的解决方案:

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