页面如图所示,我想实现的功能是,删除所选中的数据,成功或失败后,在下面显示提示信息,用js实现!页面文件是member.php,点击“删除所选”按钮,将向delete_bms.php发送所选择的数据
表单代码如下,function display_user_urls($url_array)
{
if(is_array($url_array) && count($url_array) > 0)
{
echo "<p>我的所有收藏</p>";
echo "<form>";// name='bm_table' action='../delete_bms.php' method='post'>";
echo "<table ><tr><th>收藏名称</th><th>收 藏</th><th>操作</th><th>选 择</th></tr>";
foreach($url_array as $url)
{
//$db = db_connect( );
@$db = new mysqli('localhost', 'ellizzu', '1234', 'book');
if(mysqli_connect_errno())
{
echo "数据库连接失败";
exit;
}
$query = "select name from book where username='".addslashes($_SESSION['current_user'])."' and url='".addslashes($url)."'";
$result = $db->query($query);
if(!$result)
{
echo "向数据库查询名称失败";
exit;
}
$row = $result->fetch_array( );
$bm_name = stripslashes($row[0]);
echo "<tr><td align='center'>".$bm_name."</td>";
echo "<td><a href='".htmlspecialchars($url)."'>".$url."</a></td>";
echo "<td><a href='../modify_bm.php?bm_name=".$bm_name."&url=".$url."'>修改</a></td>";
echo "<td align='center'><input type='checkbox' name='del[]' value='".$bm_name."' /></td></tr>";//checkbox部分
}
echo "<tr><td><input type='submit' value='删除所选' onClick='delBm()'/></td></tr>";//调用js
echo "</table></form>";
echo "<div id='delresult'></div>";
}
else
{
echo "<p>您还未添加任何书签</p>";
}
}
点击删除所选后,调用js部分如下function delBm() {
var url = "../delete_bms.php";
url = url+ "?del=" + document.getElementsByName('del[]').value;
myReq = getXMLHTTPRequest();
myReq.onreadystatechange = showDelResponse;
myReq.open("GET",url,true)
myReq.send(null);
}
function showDelResponse( )
{
if (myReq.readyState == 4 || myReq.readyState=="complete")
{
result = myReq.responseText;
document.getElementById('delresult').innerHTML = result;
}
}现在问题时,当选中目标后,点击删除所选,没有反应,无法向delete_bms.php页面传值,看url地址,好像选中目标数据已经接收了,但是url仍是当前页面,请问如何解决这个问题,或者有其他方法实现类似的功能呢?
表单代码如下,function display_user_urls($url_array)
{
if(is_array($url_array) && count($url_array) > 0)
{
echo "<p>我的所有收藏</p>";
echo "<form>";// name='bm_table' action='../delete_bms.php' method='post'>";
echo "<table ><tr><th>收藏名称</th><th>收 藏</th><th>操作</th><th>选 择</th></tr>";
foreach($url_array as $url)
{
//$db = db_connect( );
@$db = new mysqli('localhost', 'ellizzu', '1234', 'book');
if(mysqli_connect_errno())
{
echo "数据库连接失败";
exit;
}
$query = "select name from book where username='".addslashes($_SESSION['current_user'])."' and url='".addslashes($url)."'";
$result = $db->query($query);
if(!$result)
{
echo "向数据库查询名称失败";
exit;
}
$row = $result->fetch_array( );
$bm_name = stripslashes($row[0]);
echo "<tr><td align='center'>".$bm_name."</td>";
echo "<td><a href='".htmlspecialchars($url)."'>".$url."</a></td>";
echo "<td><a href='../modify_bm.php?bm_name=".$bm_name."&url=".$url."'>修改</a></td>";
echo "<td align='center'><input type='checkbox' name='del[]' value='".$bm_name."' /></td></tr>";//checkbox部分
}
echo "<tr><td><input type='submit' value='删除所选' onClick='delBm()'/></td></tr>";//调用js
echo "</table></form>";
echo "<div id='delresult'></div>";
}
else
{
echo "<p>您还未添加任何书签</p>";
}
}
点击删除所选后,调用js部分如下function delBm() {
var url = "../delete_bms.php";
url = url+ "?del=" + document.getElementsByName('del[]').value;
myReq = getXMLHTTPRequest();
myReq.onreadystatechange = showDelResponse;
myReq.open("GET",url,true)
myReq.send(null);
}
function showDelResponse( )
{
if (myReq.readyState == 4 || myReq.readyState=="complete")
{
result = myReq.responseText;
document.getElementById('delresult').innerHTML = result;
}
}现在问题时,当选中目标后,点击删除所选,没有反应,无法向delete_bms.php页面传值,看url地址,好像选中目标数据已经接收了,但是url仍是当前页面,请问如何解决这个问题,或者有其他方法实现类似的功能呢?
foreach($url_array as $url)
{
//$db = db_connect( );
@$db = new mysqli('localhost', 'ellizzu', '1234', 'book');那就干脆
重构
关键词 ajax
删除提交数据给php php 删除成功后返回数据给js js 控制 checkbox
否则,表单会提交刷新。还有 document.getElementsByName('del[]').value 这里也不对。
document.getElementsByName('del[]') 是一个集合,需迭代它的value值。
返回的是一个数组,包括全部名为 del[] 的对象
你至少需要
var el = document.getElementsByName('del[]');
var dels = [];
for(i=0; i<el.length; i++) {
if(el[i].checked) dels.push('del[]=' + el[i].value);
}
url = url+ '?' + dels.join('&');