0

こんにちは、私は基本的に、個別の JQueryUI タブで AJAX を介して個々の php ページ (およびそのフォーム) を呼び出しています。コードは次のようなものです。

<div id="dock">
<ul>
<li><a href="/buddylity_dev/index.php?r=welcome/home">Home</a></li>
<li><a href="/buddylity_dev/index.php?r=welcome/profile">Profile</a></li>
<li><a href="/buddylity_dev/index.php?r=welcome/statistics">Statistics</a></li>
<li><a href="/buddylity_dev/index.php?r=ping/view">Pings</a></li>
</ul>
</div>

...

jQuery(function($) {
jQuery('#dock').tabs({'collapsible':false});
});

1) タブをクリックするたびに、コンテンツは正常に読み込まれますが、以前のコンテンツは破棄されません。その結果、タブが N 回クリック (ロード) された場合を想像してください。フォームも N 回送信されます。私が理解している限り、ここでは複数のバインディングが発生するため、複数のフォームが送信されます。どうすればこれを防ぐことができますか?

2) 各タブに個別のフォームがあります。複数のタブを選択すると、複数のフォームが読み込まれます。フォームのいずれかで(AJAX経由で)値を送信すると、以前にロードされたすべてのフォームにデータが送信されます(Firebugで確認)。どうすればこれを防ぐことができますか?

PS: タブでキャッシュを有効にすると、問題 #1 は部分的に解決されますが、問題 #2 は解決しません。

PPS:私はかなりの数の同様の投稿を経験しましたが、私はまだ立ち往生しています:(

ありがとう !

4

1 に答える 1

0

そこにある小さなコードから、各タブに同じページ (index.php) を使用すると問題が発生する可能性があるようです。これらを確認してください:

  • 各フォームには個別の ID がありますか? 彼らはすべき。
  • 「cache」と「ajaxOptions」の両方でキャッシュを無効にします。これにより、クリックするたびにコンテンツが更新 (および削除) されます。
  • フォームは AJAX 経由でどのように送信されていますか? 方法に関係なく、「ロード」オプションを使用して、タブ選択ごとにフォームバインディングを処理する必要があります。

これを試して...

$("#dock").tabs({
    load: function (event, ui) {
        //setup new content bindings here
    },
    cache: false,
    ajaxOptions: {
        cache: false
    }
});
于 2011-04-25T01:25:38.880 に答える