ユーザーが図書館のカタログを検索し、書籍を選択してショッピング カートに追加できるようにする PHP Web サイトがあります。これはすべてうまく機能しますが、AJAX を検索結果テーブルに実装して、選択したレコードをカートに追加する別の php スクリプトを実行するリンクをクリックする代わりに、同じページ内でインラインでこれを行うようにしたいと考えています。これにより、レコードを「選択」したときに更新される検索結果ページが削除され、ページの上部にポップバックされます (ページの下部にいた場合は面倒です)。
リンクを使用して AJAX を実装する同様の例を見つけました - AJAX を使用するのはこれが初めてですが、ユーザーがリンクをクリックしても何も起こらないので行き詰まります。
これが私のスクリプトです:
function selectRecord() {
// Allocate an XMLHttpRequest object
if (window.XMLHttpRequest) {
// IE7+, Firefox, Chrome, Opera, Safari
var xmlhttp=new XMLHttpRequest();
} else {
// IE6, IE5
var xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
// Set up the readyState change event handler
xmlhttp.onreadystatechange = function() {
if ((this.readyState == 4) && (this.status == 200)) {
document.getElementById("selectRecord").innerHTML=xmlhttp.responseText;
}
}
// Open an asynchronous POST connection and send request
xmlhttp.open("POST", "selectRecord.php", true);
return false; // Do not follow hyperlink
}
リンク付きのテーブルセルは次のとおりです。
<td class="hidden-narrow" id="selectRecord">
<?php
if (in_array($bookID, $_SESSION['selectedBooks'])) {
echo "Selected";
} else {
echo '<a href="select" onclick="return selectRecord()" class="center">Select</a>';
}
?>
</td>
私が求めている結果がテーブルセルのリンク (「選択」) であるかどうかが明確でない場合 - ユーザーがこのリンクをクリックすると、selectRecord.php スクリプトが実行され、「選択済み」またはエラーメッセージが表示されます (存在する場合)。エラーでした。現在、ユーザーが [選択] リンクをクリックしても何も起こりません。
また、$bookID PHP 変数を AJAX スクリプトに渡す方法を考え出す必要があります。これにより、selectRecord.php がカートに追加する書籍 ID を認識できるようになります。