ajax checkbox php


ajax checkbox php

我有一个php-ajax页面,用户在search.php中写入搜索字符串列表在getsearch.php中得到响应。getsearch.php的结果在使用ajax的search.php中显示但每行都有复选框。

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>';

因此,当用户写入新的搜索字符串时,列表会发生更改,因此会取消选中以前的复选框。那么,即使搜索发生变化,我如何保留以前的复选框并显示它们呢

经过一天的尝试,我终于成功地做到了

请参阅用户在search.php中输入搜索字符串,然后将查询传递到getsearch.php,并从中返回结果,这些结果显示在search.php 中

所以我没有使用复选框,而是插入了一个按钮。所以现在每一行都有一个按钮,而不是复选框。

<button type="button" onClick="submitform(<?php echo $row['hobbyid']; ?     >);">Add hobby</button>

现在在search.php中,我再次使用了另一个ajax函数(submitform)来处理按钮的onclick调用。当按下按钮add hobby时,将调用ajax函数submitform并插入该hobby。

所以基本上我在search.php中使用了两个ajax函数,一个用于搜索和填充结果,另一个用于将其更新到数据库

(1)您可以在搜索请求中发送复选框状态,并在PHP代码中设置已检查/未检查,并将其包含在对数据库的请求中,这样它将像一样

"select hobbyid,hobby from hobbies where hobby LIKE '%".$q."%' or hobbyid in(list_of_hobbies_received_in_request) "

相比之下,在您呈现HTML的循环中,检查id是否在收到的id数组中,并为所需的爱好设置checked状态。

(2) 或者,您可以在用javascript发送请求之前和收到响应之后重新记住复选框状态——避免删除选定的复选框,并检查是否有重复的复选框。但这看起来将是一个巨大的痛苦,你如何获得搜索结果。所以,我认为(1)正是你所需要的。