首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery.ajax文件删除

jQuery.ajax文件删除
EN

Stack Overflow用户
提问于 2012-09-18 10:48:39
回答 1查看 3.2K关注 0票数 2

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

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

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-18 10:57:22

这是您的错误->

代码语言:javascript
复制
var sid = "$vid";. 

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

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

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

更改此

代码语言:javascript
复制
$option = "<td><form method='POST'><button type='submit' name='del' class='del'><i class='icon-remove'></i></button></form></td>";

指向此的

代码语言:javascript
复制
$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>";

现在更改您的click函数以引用真实的sid。

代码语言:javascript
复制
$(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;
    });
 });

如果您希望在更新之后返回行,则需要根据上面用于检索行并返回它们的方法,重新生成要打印的数据,您可以重用它。

代码语言:javascript
复制
$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并替换表中的现有数据。

代码语言:javascript
复制
$(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;
    });
 });
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12469733

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档