Php 如何在删除后使用xmlhttp/ajax刷新文件/图像库而不重新加载整个页面?
对不起,我的问题太长了。我会尽力解释的 我创建了一个图像列表,当您将鼠标悬停在某个元素上时,这些图像是可见的(使用css) 每个图像也是一个单选按钮,可作为表单的一部分进行选择和使用。 所有图像基本上都是某个目录中的图像,您也可以上传到该目录 我已经设法在每个图像旁边添加了一个“删除”按钮,该按钮将触发一个函数,该函数调用php脚本来删除该特定图像,而无需重新加载页面。使用xmlhttp.xml可以很好地工作 但是图像列表不会自动刷新。正如刚才删除的图像一样,当我将鼠标悬停在元素上,直到刷新页面,然后刷新列表时,它仍然可见 显然我不想刷新页面,这就是使用ajax的全部意义所在。你知道我能做什么吗?代码如下:Php 如何在删除后使用xmlhttp/ajax刷新文件/图像库而不重新加载整个页面?,php,ajax,image,gallery,xmlhttprequest,Php,Ajax,Image,Gallery,Xmlhttprequest,对不起,我的问题太长了。我会尽力解释的 我创建了一个图像列表,当您将鼠标悬停在某个元素上时,这些图像是可见的(使用css) 每个图像也是一个单选按钮,可作为表单的一部分进行选择和使用。 所有图像基本上都是某个目录中的图像,您也可以上传到该目录 我已经设法在每个图像旁边添加了一个“删除”按钮,该按钮将触发一个函数,该函数调用php脚本来删除该特定图像,而无需重新加载页面。使用xmlhttp.xml可以很好地工作 但是图像列表不会自动刷新。正如刚才删除的图像一样,当我将鼠标悬停在元素上,直到刷新页面
函数deleteImage(){
var answer=confirm('您确定要删除此项吗?')
若有(答复){
var image=document.getElementById('filepath')。值;
var-xmlhttp;
if(window.XMLHttpRequest)
{
xmlhttp=新的XMLHttpRequest();
}
其他的
{
xmlhttp=新的ActiveXObject(“Microsoft.xmlhttp”);
}
xmlhttp.onreadystatechange=函数()
{
if(xmlhttp.readyState==4&&xmlhttp.status==200)
{
document.getElementById(“uploadmsg”).innerHTML=xmlhttp.responseText;
}
}
open(“POST”,“delete.php”,true);
setRequestHeader(“内容类型”,“应用程序/x-www-form-urlencoded”);
xmlhttp.send(“image=“+image”);
}
}
然后使用php/html来调用它
-
' />
删除
使鼠标悬停在物体上的css基本上是一个div中的span
#chooseimage
,设置为left:9999px代码>但当悬停在上时,它会移动到左侧:0px代码>
我不认为任何人需要更多的信息,但如果你需要,请告诉我
作为补充说明,我不确定这是否真的是ajax?也许有人能帮我澄清一下
如果你能帮忙,我将非常感激。我在谷歌上搜索了好几个小时,但什么也找不到。好吧,所以对于有同样问题的人,我找到了答案
显示所有图像及其单选按钮和删除按钮的代码存储在单独的php
文件中:
<?php
$dir = "../images/";
$dh = opendir( $dir );
while( $filename = readdir( $dh ) ) {
$filepath = $dir.$filename;
$gallery[] = $filepath;
$list[] = $filename;
}
sort( $gallery );
sort( $list);
$num_pics = count($gallery);
?>
<div id="choose"><div id="echo">
<div style="background-color: #F04D8E; color: #ffffff;">Choose Image</div></div>
<span><ul>
<?php
$a = 3;
while($num_pics > $a)
{
$image = $gallery[$a];
?>
<li>
//the radio button triggers an event which then showsthe image selected
<input id="radio" type='radio' name='image' onchange="thumb('<?php echo $image; ?>')"
value='<?php echo $list[$a]; ?>'><?php echo $list[$a]; ?>
<div id='gallery'>
// the delete button sends the images 'id' in its parameter
<button style="float:right;" type='button'
onclick="deleteImage('<?php echo $image; ?>', '<?php echo $list[$a]; ?>' )">
Delete</button>
<img src='<?php echo $image; ?>' /></div>
</li>
<?php
$a ++;
}
?>
</ul></span></div><br>
然后,我在页面中只需要一个div
和id
作为result
哦,delete.php
页面仍然是:
<?php
$image = $_POST['image'];
if (!empty($image)){
unlink($image);
}
?>
有人说这很危险?但我不明白为什么
你可以自由提问
thanx好吧,你必须从你的ajax调用中返回一些东西,因此一些javascript代码将从页面中删除删除的图像。你可能应该重新考虑你的整个代码,你所做的是非常危险的。你让每个人都有可能删除目录中的所有文件,包括所有PHP文件等等。人们怎么可能删除所有文件?除了单击按钮,没有用户输入。而且数据被发布了,所以1号可以看到它???djot。。。。谢谢你的回复。。。我不知道如何从ajax调用中返回一些内容来删除删除的图像。。。这就是问题所在。有什么想法吗?
<?php
$image = $_POST['image'];
if (!empty($image)){
unlink($image);
}
?>