AJAX加载的内容,脚本不执行(ajax loaded content, script is not

2019-06-28 04:15发布

我使用jquery地址插件加载页面,但没有哈希(#)。

index.html的:

<a href="page.html">Link</a>
<div id="content">

    <script>

        $(document).ready(function() {

            $.address.init(function(event) {

                $('a').address();

            }).change(function(event) {
                // do something depending on the event.value property, e.g.
                console.log(event.value);

                $.ajax({
                    type: "POST",
                    url: event.value,
                    success: function(msg){
                        $('#content').html( $(msg).find("#content").html() );
                    }
                });
            });
            $('a').click(function(e) {
                $.address.value($(this).attr('href'));

            });
        });

    </script>


</div>

page.html中:

<div id="content">
    <p>text</p>
    <script>
        $(document).ready(function() {
            alert('loaded');
        });
    </script>

</div>

在#内容DIV将被载入从page.html中#内容HTML(也许我应该使用其他功能,而不是.HTML(),指正请),在该专区是脚本标签,但我没有得到警报时页面加载从阿贾克斯,它适用于没有Ajax加载。 有人能帮我吗 ?

编辑:我收到的时候我试图点击与js函数链接此错误:

XMLHttpRequest cannot load javascript:;. Cross origin requests are only supported for HTTP.

DEMO: http://fbstatusi.com/desavanja/kalendar/mesecna_lista

点击链接Zurka 123

Answer 1:

document.ready只发生一次,加载文件时。 AJAX请求不会导致它。

<div id="content">
    <p>text</p>
    <script type="text/javascript">
            alert('loaded');
    </script>
</div>

这应该工作。 也可以尝试改变$(msg).find("#content").html()$(msg).find("#content")[0].innerHTML ,如jQuery文档剔除标签。

编辑

看看这个线程存在,为什么出现这种情况长时间的讨论。 如果这样的$(msg) jQuery将始终删除脚本标记。 但在同一时间$(msg).filter("script")返回脚本,所以你可以先找到这些脚本,然后插入后,他们都$('#content').html( $(msg).find("#content").html() );



Answer 2:

我遇到的情况下,当一个Ajax调用将返回新的HTML,包括需要执行该脚本。 该代码是这样的:

$.ajax('/url', {
  method: 'get',
  success: function(response) {
    document.getElementById("my-body").innerHTML = response;
  }
});

在上面的代码, response将包含需要执行的脚本,但它不会执行。 更改success回调下列固定它:

$("#my-body").html(response);

我不知道为什么是这样的话(这显然与实施做.html()方法)。 也许有人会用一个解释评论



文章来源: ajax loaded content, script is not executing