新人请教一个问题

w618713 2012-06-28 09:41:27
页面如图所示,我想实现的功能是,删除所选中的数据,成功或失败后,在下面显示提示信息,用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', 'bookmark');
if(mysqli_connect_errno())
{
echo "数据库连接失败";
exit;
}
$query = "select name from bookmark 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仍是当前页面,请问如何解决这个问题,或者有其他方法实现类似的功能呢?
...全文
116 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuzuning 2012-06-28
  • 打赏
  • 举报
回复
document.getElementsByName('del[]')
返回的是一个数组,包括全部名为 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('&');
一起混吧 2012-06-28
  • 打赏
  • 举报
回复
既然是无刷新则应该这样: <input type='button' value='删除所选' onClick='delBm()'/>
否则,表单会提交刷新。

还有 document.getElementsByName('del[]').value 这里也不对。
document.getElementsByName('del[]') 是一个集合,需迭代它的value值。
w618713 2012-06-28
  • 打赏
  • 举报
回复
就是点击删除所选按钮调用js函数delBm(),把所选择checkbox对应的bm_name传给delete_bms.php,该文件每个bm_name删除对应的数据,然后返回删除结果给js的showDelResponse函数
[Quote=引用 1 楼 的回复:]
稍微看了下代码,也还没完全弄明白你的问题.不过如果代码这么写
foreach($url_array as $url)
{
//$db = db_connect( );
@$db = new mysqli('localhost', 'ellizzu', '1234', 'bookmark');

那就干脆
重构
关键词 ajax
删除提交数据给php php 删……
[/Quote]
黄袍披身 2012-06-28
  • 打赏
  • 举报
回复
稍微看了下代码,也还没完全弄明白你的问题.不过如果代码这么写
foreach($url_array as $url)
{
//$db = db_connect( );
@$db = new mysqli('localhost', 'ellizzu', '1234', 'bookmark');

那就干脆
重构
关键词 ajax
删除提交数据给php php 删除成功后返回数据给js js 控制 checkbox

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧