0

.aspxこのように jquery を使用してページを読み込もうとしています。

        $('ul#menu li ul.collapse').on('click', 'li a', function (e) {
            e.preventDefault();
            var div = $('#content .container-fluid .row-fluid .span12');

            var url = $(this).attr('href');
            setTimeout(function () {
                var htmlPage = div.load(url + ' #MainContentHolder',
                    function () {
                         //other stuff
                    });
            }, 1000);

        });

ただし、私の.aspxページにはこのように JavaScript が埋め込まれています。

<div id="MainContentHolder">
    <h1>Test Aspx Content</h1>
    <div>
        <script type="text/javascript">
            alert("hello");
        </script>
    </div>
</div

結果HTMLが表示されると、それがロードされていることがわかります(firebugを使用)。しかし、 他のすべての質問も読んだalert()メッセージは表示されていませんが、これについては役に立ちません。
stackoverflow

アップデート:

asnwer で提案されているように、次のコードは初めてのみ機能します。をオフにしようとしましたが、cache:falseから までも試しましGETPOST

 $.ajax({
         url:url,
         success:function(data){
         div.html(data);
    }
}); 
4

2 に答える 2

1

var htmlPage = div.load(url + ' #MainContentHolder', function () { //その他のもの });

.load()のドキュメントによると、

ただし、セレクター式を URL に追加して .load() を呼び出すと、DOM が更新される前にスクリプトが削除されるため、スクリプトは実行されません。

代わりに、スクリプトを js ファイルに入れて$.getScript()を使用することもできます。これは、GET HTTP 要求を使用してサーバーから JavaScript ファイルをロードし、それを実行します。

編集:

別の方法は、ページにスクリプトのみを配置し、以下のリンクに示すようにそのページをロードすることです

jQuery .load() 呼び出しは、読み込まれた html ファイルで JavaScript を実行しません

また

$.ajax() を使用し、成功したコールバック関数で既に提案されているように、この投稿に示されているように、JS コードを明示的に実行する必要があります。評価を使用します。

また

.load を使用して動的ページをロードできます。成功した場合は、前述のように $.getScript を使用してコールバック関数を使用します。

それが役立つことを願っています!

于 2013-06-21T08:46:37.883 に答える
1
$('ul#menu li ul.collapse').on('click', 'li a', function (e) {
            e.preventDefault();
            var div = $('#content .container-fluid .row-fluid .span12');

            var url = $(this).attr('href');
            setTimeout(function () {
                $.ajax({
                        url:url,
                        success:function(data){
                                    div.html(data);
                                    //other stuff
                                }
                        });  

            }, 1000);

        });
于 2013-06-21T08:47:34.967 に答える