我有一个 php-ajax 页面,用户在其中写入搜索字符串 search.php,列表在 getsearch.php 中回显。getsearch.php的结果显示在 search.php 中使用 ajax但每一行都有复选框。
getsearch.php
$q = $_GET["q"];
$sql = "select hobbyid,hobby from hobbies where hobby LIKE '%".$q."%' ";
if($result=mysql_query($sql))
{
while($row=mysql_fetch_assoc($result))
{
$v = $row['hobbyid'];
echo $row['hobby'] . '<input type="checkbox" name="hobby[]" value='.$v.'>';
}
}
您可以在以下代码中看到,每次更改(onkeyup)都会触发此 sql。我保留了一个复选框来获取一系列选定的爱好。这些被选择的值被传递给 updatehobby.php。
search.php
echo '<form action="updatehobby.php" method="POST">
echo 'Search:<input type="text" onkeyup="showSearch(this.value)" />
<div id="txtSearch" >HERE THE RESULTS FROM getsearch.php are shown</div>
<input type="submit></form>';
因此,当用户编写新的搜索字符串时,列表会发生变化,因此之前的复选框会被取消选中。那么即使搜索发生变化,我如何保留以前的复选框并显示它们?
最终经过1天的尝试,我成功地做到了!
看到用户在 search.php 中输入搜索字符串,查询被传递给 getsearch.php 并从那里回显结果,这个结果显示在 search.php
所以我没有使用复选框,而是插入了一个按钮。所以现在每一行都有一个按钮而不是复选框。
<button type="button" onClick="submitform(<?php echo $row['hobbyid']; ? >);">Add hobby</button>
现在在 search.php 中,我再次使用了另一个处理按钮的 onclick 调用的 ajax 函数(submitform)。当按下按钮添加爱好时,将调用 ajax 函数 submitform 并插入爱好。
所以基本上我在 search.php 中使用了两个 ajax 函数,一个 ajax 用于搜索和填充结果,另一个用于将其更新到数据库。