5

ページの読み込みに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>

#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ドキュメントが読み込まれるときに1回だけ発生します。AJAXリクエストはそれを引き起こしません。

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

これは機能するはずです。また、jquery htmlがタグを削除するため、に変更$(msg).find("#content").html()してみてください。$(msg).find("#content")[0].innerHTML

編集

このスレッドを見てください。なぜそれが起こるのかについて長い議論があります。このような場合、$(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 に答える