PHP jquery ajax取消链接文件夹中的图像不起作用


PHP jquery ajax unlink images from folder not working

我正在尝试显示和删除存储在文件夹中的图像,但我无法运行删除每个图像的JS代码。

index.php中的我的代码php:

// folder with files    
$pathimages = $_SERVER['DOCUMENT_ROOT'];
$pathimages .= "/uploads/files/";
// showing images
foreach(glob($pathimages.'*') as $filename){
    $ext = pathinfo($filename, PATHINFO_EXTENSION);
    $name_only = basename($filename, ".".$ext);
    echo "<img src='"../uploads/files/" .$name_only.".".$ext. "'" width='"30'" />
        <a onclick='"DeleteImage(".$name_only.",".$ext."); return false;'" href='"javascript:;'">X</a>
        <br />";
}

(我用两个变量发送文件名和扩展名,我不知道为什么)

当我点击"X"时,调用函数"DeleteImage",但不起作用。

JS函数从导入的.JS文件:

 function DeleteImage(name_only, ext){
    var parametros = {
        "name_only" : name_only,
        "ext" : ext
    };
    $.ajax({
        url: 'views/delete_image.php',
        type: "POST",
        data: parametros,
        success: function(datos){
            console.log("check");
        }
    });
}

和删除文件php:

$name_only = $_POST['name_only'];
$ext = $_POST['ext'];
$pathimages = $_SERVER['DOCUMENT_ROOT'];
$pathimages .= "/uploads/files/";
unlink($pathimages . $name_only .".". $ext);
echo "Deleted";

我有一些类似的东西,但数据库中有记录,使用GET方法、删除、编辑等都可以正常工作。但问题从这里开始了。非常感谢你,我为我的英语道歉。

由于这是一个javascript错误,请查看以下代码行:

<img src='"../uploads/files/" .$name_only.".".$ext. "'" width='"30'" />
        <a onclick='"DeleteImage('".$name_only."','".$ext."'); return false;'" href='"javascript:;'">X</a>
        <br />

您必须在javascript中添加引号。

我认为问题出在您传递的数组上,

尝试使用,

data:{name_only:name_only,ext:ext},

传递参数,或者您可以考虑将它们作为json数组传递。

我认为真的不可能给出答案。问题可能出在任何地方。我会考虑:i.图像显示在页面上吗?ii。在DeleteImage中放一个调试点,看看parameteros到底是什么。这也会检查它是否被调用。iii.是否进行了ajax调用?再次,Firebug或Chrome开发工具将派上用场。查看"网络"选项卡和XHR选项。iv.好的。所以我们已经走到了这一步;回显ajax处理程序的帖子-你在那里传递了正确的参数吗?v.取消链接返回什么?它返回true或false。如果为false,则可能存在路径或权限问题。

基本上,在我看来,你的问题显示出缺乏关于如何调试的知识。

  1. 很好。

  2. 如果使用Chrome。按F12。选择来源。单击左侧的小箭头。选择包含DeleteImage的JS文件,如果是内联Javascript,则选择页面。打开文件(在调试器中)。使用右手边的Watch Expressions,通过单击+号并键入parameteros来查看paramatros的实际内容。然后单击X。调试器将启动并停止在您放置断点的行。(现在查看右侧的"监视表达式",然后键入要监视的变量的名称,例如parameteros)。

  3. "什么都没发生":你确定吗?现在你已经打开了Chrome调试器,点击"网络"选项卡;然后单击XHR(这意味着您只能看到Ajax请求)。查看右侧面板中的Headers和Response。现在您可以看到发生了什么:是否进行了ajax调用(我假设您已经在包含DeleteImage的文件之前加载了jQuery?)?它返回了什么?

    • -
  4. 现在,您可以看到ajax调用的响应,将删除文件修改为:$result=unlink($pathimages.$name_only.".".$ext);echo$result。这是真的还是假的?在$_POST上执行var_dump(),即在删除文件中执行var_dmp($_POST),看看您在响应中得到了什么-您发布了想要的内容吗?

当然,您可以尝试的另一件事是使用已知参数直接在浏览器地址栏中调用php删除脚本,看看该部分是否正常工作。

你能添加吗

 echo $pathimages . $name_only .".". $ext;

进入deletefile.php

我认为$ext重复了。但我不确定。