从外部文件加载html而不会丢失<script>标签?</script>

时间:2013-08-15 00:37:28

标签: javascript jquery ajax

我想从外部源下载一些html,只获取id #lay_body_get中的内容。此外部源还包含<script></script>标记,但jQuery正在从响应中取消。有没有办法在脚本标签中获取包含javascript代码的html代码?

这是功能:

function ocmenu(url) {       
    $.ajax({
        url: url,
        dataType:"text"
     }).done(function(resp) {
          $('.new').html($('#lay_body_get',resp));
     });
}

2 个答案:

答案 0 :(得分:7)

请勿使用dataType:"text"。使用"html"或将其保留为自动。

请参阅:jQuery .ajax docs

  

“html”:以纯文本形式返回HTML;包含的脚本标记在插入DOM时进行评估。   “text”:纯文本字符串。

再往下在同一页面上:

  

如果指定了html,则在将HTML作为字符串返回之前,将执行检索到的数据中的任何嵌入式JavaScript。

其他一些可能的原因:

  • 服务器返回的mimeType不是text / html

一个简单的工作示例

的file1.html

<html>
<head>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
</head>
<body>
    <div id="putResultHere">
    </div>

    <script>
        $(function() {
           $.ajax({
                url: 'file2.html',
                dataType:"html"
             }).done(function(resp) {
                  $('#putResultHere').html($(resp));
             });

        });
    </script>
</body>
</html>

file2.html

<h1>Ajax done!</h1>

<script>
alert('script worked');
</script>

答案 1 :(得分:0)

$(resp).find('script').each(function(i,script){
    eval($(script).text());
});

确保您信任外部文件..