これは、AJAXリクエストの結果を入れているブートストラップモーダルです
<div class="modal hide" id="myModal">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">×</button>
<h3>Modal header</h3>
</div>
<div id="modal-body"></div>
<div class="modal-footer">
<a href="#" class="btn" data-dismiss="modal">Close</a>
</div>
</div>
JavaScriptコードは次のようになります
<script type="text/javascript">
$('#myModal').modal('hide');
$('div.divBox a').click(function(){
var vendor = $(this).text();
console.log(vendor);
$('#myModal').on('show', function(){
$.ajax({
type: "GET",
url: "ip.php",
data: "id=" + vendor,
success: function(html){
$("#modal-body").html(html);
}
});
});
});
$('#myModal').on('hide', function () {
$("#modal-body").empty();
<?php unset($_GET); ?>;
})
</script>
ip.phpファイル は
アンカーリンクのコードは次のようになります
<tbody>
<?php foreach ($rowarr as $k => $v) { ?>
<tr>
<td><?php echo $k ?></td>
<td>
<div class="divBox">
<a data-toggle="modal" href="#myModal"><?php echo $v; ?></a>
</div>
</td>
</tr>
<?php } ?>
</tbody>
$k は数値です。$v は、スペースと特殊文字を含む名前です。
console.log(vendor) には、CDT でクリックしたリンクのテキストが表示されます。しかし、モーダルの出力は変わります。以前にクリックしたすべてのリンク テキストを調べ、それらを置き換え続け、最終的に最新のリンク テキストに到達します。
したがって、この順序でリンクをクリックすると、コンソール出力は次のようになります
Microsoft Corporation
IBM Corp
Hewlett-Packard
Apple
モーダルのテキストは次のように始まります
Array ( [id] => Microsoft Corporation )
次に置き換えます
Array ( [id] => IBM Corp )
次に置き換えます
Array ( [id] => Hewlett-Packard)
その後、
Array ( [id] => Apple )
ページでクリックされたリンクを追跡しているのは何ですか? 新しいリンクがクリックされるたびにリセットする必要がありますか?
編集:「何を試しましたか?」への対応
$("#modal-body").empty();
私がクリアする必要があるのはおそらくモーダルボディであることを期待して、そこにを追加しました。そうではありませんでした。次に、モーダルを閉じるときに GET 変数をリセットする必要があるのではないかと考えたので、<?php unset($_GET); ?>;
. しかし、print_r($_GET) は、以前にクリックされたすべてのリンクではなく、配列に 1 つの配列要素のみが含まれていることを示しています。そのため、クリックされたリンクの履歴がどこに保存されているかわかりません。