jQuery.ajax文件删除

时间:2012-09-18 02:48:39

标签: php jquery file delete-file

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

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

1 个答案:

答案 0 :(得分: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;

现在我们需要更改click处理程序以期望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;
    });
 });