我正在尝试显示和删除存储在文件夹中的图像,但我无法运行删除每个图像的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,则可能存在路径或权限问题。
基本上,在我看来,你的问题显示出缺乏关于如何调试的知识。
-
很好。
-
如果使用Chrome。按F12。选择来源。单击左侧的小箭头。选择包含DeleteImage的JS文件,如果是内联Javascript,则选择页面。打开文件(在调试器中)。使用右手边的Watch Expressions,通过单击+号并键入parameteros来查看paramatros的实际内容。然后单击X。调试器将启动并停止在您放置断点的行。(现在查看右侧的"监视表达式",然后键入要监视的变量的名称,例如parameteros)。
-
"什么都没发生":你确定吗?现在你已经打开了Chrome调试器,点击"网络"选项卡;然后单击XHR(这意味着您只能看到Ajax请求)。查看右侧面板中的Headers和Response。现在您可以看到发生了什么:是否进行了ajax调用(我假设您已经在包含DeleteImage的文件之前加载了jQuery?)?它返回了什么?
-
- -
-
现在,您可以看到ajax调用的响应,将删除文件修改为:$result=unlink($pathimages.$name_only.".".$ext);echo$result。这是真的还是假的?在$_POST上执行var_dump(),即在删除文件中执行var_dmp($_POST),看看您在响应中得到了什么-您发布了想要的内容吗?
当然,您可以尝试的另一件事是使用已知参数直接在浏览器地址栏中调用php删除脚本,看看该部分是否正常工作。
你能添加吗
echo $pathimages . $name_only .".". $ext;
进入deletefile.php
我认为$ext重复了。但我不确定。