5

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

索引.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>

在#content div中将从page.html加载#content html(也许我应该使用其他功能,而不是.html(),请纠正我),因为该div是脚本标签,但是当该页面加载时我没有收到警报从 ajax,它可以在没有 ajax 加载的情况下工作。有人能帮我吗 ?

编辑:当我尝试单击带有 js 函数的链接时出现此错误:

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

演示: http: //fbstatusi.com/desavanja/kalendar/mesecna_lista

点击链接Zurka 123

4

2 回答 2

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 html 会去除标签。

编辑

看看这个线程有一个关于为什么会发生的长时间讨论。在这种情况下,$(msg)jquery 将始终删除脚本标签。但同时$(msg).filter("script")返回脚本,所以你可以先找到那些脚本,然后将它们全部插入$('#content').html( $(msg).find("#content").html() );

于 2012-09-10T22:02:43.230 回答
0

我遇到过这样一种情况,即 ajax 调用会返回包含需要执行的脚本的新 HTML。代码如下所示:

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

在上面的代码中,response将包含需要执行的脚本,但它不会执行。将回调更改success为以下修复它:

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

我不确定为什么会这样(显然它与.html()方法的实现有关)。也许有人可以评论解释

于 2018-06-28T00:21:28.127 回答