Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从AJAX响应中提取并执行脚本_Javascript_Jquery - Fatal编程技术网

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

Javascript 从AJAX响应中提取并执行脚本,javascript,jquery,Javascript,Jquery,我的AJAX响应返回如下内容: <div> .. </div> <script type="text/javascript"> .. </script> <script type="text/javascript"> .. </script> <div> .. </div> .. .. .. .. 我想从脚本标记执行脚本(应该可以跨浏览器工作)并在后面插入文本(div)。您的脚本标记不需要

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

<div>
..
</div>

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

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

<div>
..
</div>

..
..
..
..

我想从脚本标记执行脚本(应该可以跨浏览器工作)并在后面插入文本(div)。

您的
脚本
标记不需要
type=“text/javascript”
属性以实现跨浏览器兼容性

您的JavaScript将自上而下执行。因此,无论哪个脚本先出现,都将首先执行。最后添加文本插入,如下所示:

<div>
..
</div>

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

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

<div>
..
</div>
HTML:


从ajax响应中提取脚本通常是不好的做法(缓存、安全性等等)。 最好处理ajax响应中返回的数据(JSON)。考虑使用jQuery或其他框架,因为它们提供跨浏览器功能和DOM操作内置。p> 请参见以下DOM操作示例:

$(document).ready(function() {
  var $grouplist = $('#groups');
  $.each(myData, function() {
    $('<li>' + this.name + '</li>').appendTo($grouplist);
  });
});
$(文档).ready(函数(){
var$grouplist=$(“#组”);
$.each(myData,function(){
$(“
  • ”+this.name+“
  • ”).appendTo($grouplist); }); });
    @

    如果您想在没有框架的情况下继续使用本机功能,javascript提供了依赖于浏览器的本机dom操作功能

    将新的
    元素添加到正文时,应自动注册该元素

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

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

    好吧,jQuery内置了这个功能……尝试一下新的
    元素吗?在本文中,
    text/javascript
    是自Netscape以来
    script
    的默认类型;)
    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);
    });