PHP jquery ajax取消链接文件夹中的图像无法正常工作

时间:2013-08-14 14:00:18

标签: php javascript jquery unlink

我正在尝试显示和删除存储在文件夹中的图像,但我无法运行删除每个图像的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 />";
}

(我在两个vars中发送文件名和扩展名,我不知道为什么)

当我点击“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方法,删除,编辑等。但这里的问题开始了。非常感谢,我为我的英语道歉。

5 个答案:

答案 0 :(得分: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中添加引号。

答案 1 :(得分:1)

我认为不可能提供答案。问题可能在任何地方。我会考虑: 一世。图像是否显示在页面上? II。在DeleteImage中放置一个调试点,看看实际上是什么参数。这也将检查它是否被调用。 III。即使是ajax电话吗? Firebug或Chrome开发人员工具将在这里派上用场。查看“网络”选项卡和XHR选项。 IV。好。所以我们已经走到了这一步;从ajax处理程序回显帖子 - 你在那里传递了正确的参数吗? v.unlink返回什么?它返回true或false。如果为false则可能存在路径或权限问题。

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

答案 2 :(得分:1)

  1. 好。

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

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

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

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

答案 3 :(得分:1)

我认为问题在于你传递的数组,

尝试使用,

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

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

答案 4 :(得分:0)

可以添加

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

进入deletefile.php

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