2

我有一个 jquery delete 语句,它只删除我的文件上的最新上传(使用 mysql)说我有“文件首先上传”,“文件上传第二个”,“文件最后上传(最新文件)”。如果我点击“第一个或第二个上传的文件”,它会删除最新的(第三个上传的文件)。

    $(document).on('click', '.del', function(){
    var sid = $(this).next('.hiddenVid').val();
    $.ajax({
        type: "GET",
        url: "delete.php",
        data: {id:sid}
    });
    return false;
});
4

1 回答 1

3

这是你的错误->

var sid = "$vid";. 

它只会为您输入的最新项目生成 ID。

将一个项目添加到您的 echo 语句,以便您稍后可以在 click 函数中引用它。

在隐藏的输入中添加对 vid 的引用。

改变这个

$option = "<td><form method='POST'><button type='submit' name='del' class='del'><i class='icon-remove'></i></button></form></td>";

对此

$option = "<td><form method='POST'><button type='submit' name='del' class='del'><i class='icon-remove'></i></button><input type='hidden' class='hiddenVid' value='".$vid."'/></td>";

现在更改您的点击功能以引用真实的 sid。

$(function(){
    $(".del").click(function(){
        var row = $(this).parent();
        var sid = $(this).next('.hiddenVid').val();
        alert(sid);
        $.ajax({
            type: "GET",
            url: "delete.php",
            data: {id:sid}
        });
        return false;
    });
 });

如果要在更新后返回行,则需要将数据吐回以进行打印,基于上述用于检索行并返回它们的方法,您可以重复使用它。

$id = mysql_real_escape_string($_REQUEST['id']);
$DB->Query("DELETE FROM `files` WHERE `id`='$id'");

if(TRUE == (unlink("uploads/$id")):
    $DB->Query("SELECT * FROM `files` WHERE `author`='$username'");
    $file = $DB->Get();
    $obj = new stdClass();
    $i = 0;
    foreach($file as $key => $value){
        $n = $value['name'];
        $vid = $value['id'];
        $date = "<td>".$value['date']."</td>";
        $fname = "<td><a id='$vid' href='download.php?id=$vid'>$n</a></td>";
        $option = "<td><form method='POST'><button type='submit' name='del' class='del'><i class='icon-remove'></i></button></form></td>";
        $size = "<td>".filesize("uploads/".$vid."/".$value['name'])." bytes</td>";
        $obj->$i = $files = "<tr>".$fname.$size.$date.$option."</tr>";
        $i++;
    }
    echo json_encode($obj);
endif;

现在我们需要更改点击处理程序以期望 dataType 并替换表中的现有数据。

$(function(){
    $(".del").click(function(){
        var row = $(this).parent();
        var sid = $(this).next('.hiddenVid').val();
        alert(sid);
        $.ajax({
            type: "GET",
            url: "delete.php",
            dataType: 'json',
            data: {id:sid},
            success: function(data){
              $('table').empty();
              $.each(data, function(i,obj){
                  $('table').append(obj);
              }
            }
        });
        return false;
    });
 });
于 2012-09-18T02:57:21.903 回答