0

我正在尝试显示和删除存储在文件夹中的图像,但我无法运行删除每个图像的 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 方法、删除、编辑等。但问题就从这里开始了。非常感谢,我为我的英语道歉。

4

5 回答 5

2

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

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

您必须在 javascript 中添加引号。

于 2013-08-14T14:14:16.810 回答
1

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

基本上,在我看来,您的问题是缺乏关于如何调试的知识。

于 2013-08-14T14:14:32.870 回答
1
  1. 好的。

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

  3. “什么都没有发生”:你确定吗?现在你打开了 Chrome 调试器,点击 Network 标签;并单击 XHR(这意味着您只能看到 Ajax 请求)。查看右侧面板中的标题和响应。现在您可以看到发生了什么:是否进行了 ajax 调用(我假设您在包含 DeleteImage 的文件之前加载了 jQuery?)?它返回了什么?

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

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

于 2013-08-14T14:41:21.477 回答
1

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

尝试使用,

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

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

于 2013-08-14T15:46:45.697 回答
0

你能加吗

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

进入 deletefile.php

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

于 2013-08-14T14:12:28.360 回答