0

.load()を使用してhtmlフォームをdivにロードするjqueryクリックイベントがあります

フォームスニペットには、jsを再定義すると同時にフォーム入力にajax応答を入力する参照jsファイルがあります。

フォームで[保存]をクリックすると、保存されたもののビューバージョンが(.loadを使用して)divがロードされます。

もう一度編集をクリックして、最初に述べたアクションを開始すると、ロードは実行されますが、javascript参照がリロードされないため、ajaxポピュレーションが開始されません。

解決策はありますか?

<script type="text/javascript" src="js/controls.js"></script>

編集:コードを追加する

function populate() {
        var index = 1;
        $("#list").html("&nbsp;");
        for (item in object) {
            var html ='blah';
            $("#list").append(html);

            $(".item").live('click',
                function() {
                    $("#container").load("./html-includes/file.html?ver="+ver, function () {
                        apiCall.getData(referenceId);
                        alert('callback'+$rootScope.currentPage);
                    });
                }
            );
            index++;
        };
    }

この場合、ファイルhtmlには前述のjavascriptリファレンスがあり、デバッグアラートが含まれています。これは.loadへの2回目の呼び出しでファイリングされません。

4

1 に答える 1

0

ほとんどの場合、ブラウザのキャッシュにデータがないため、 $.load() メソッドが初めて機能します。次回ループで呼び出すと Ajax 呼び出しは実行されず、キャッシュからデータが返されます。その結果、コールバックは起動されません....フィドラーまたは同様のツールを使用してこれを確認できます-サーバーへのリクエストは1つだけです....

考えられる解決策は、キャッシングをオフにするか ($.ajax() メソッドを参照)、現在の時間のようなクエリ (別名 url) に動的パラメーターを追加することです。これにより、ブラウザーは結果をキャッシュしません。または、$.load() で post メソッドを使用します (送信するデータを追加するだけで、Jquery は get の代わりに post を使用します)。ただし、これがエレガントな方法であるかどうかはわかりません -)。

于 2013-01-16T14:16:46.733 に答える