Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在删除后使用xmlhttp/ajax刷新文件/图像库而不重新加载整个页面?_Php_Ajax_Image_Gallery_Xmlhttprequest - Fatal编程技术网

Php 如何在删除后使用xmlhttp/ajax刷新文件/图像库而不重新加载整个页面?

Php 如何在删除后使用xmlhttp/ajax刷新文件/图像库而不重新加载整个页面?,php,ajax,image,gallery,xmlhttprequest,Php,Ajax,Image,Gallery,Xmlhttprequest,对不起,我的问题太长了。我会尽力解释的 我创建了一个图像列表,当您将鼠标悬停在某个元素上时,这些图像是可见的(使用css) 每个图像也是一个单选按钮,可作为表单的一部分进行选择和使用。 所有图像基本上都是某个目录中的图像,您也可以上传到该目录 我已经设法在每个图像旁边添加了一个“删除”按钮,该按钮将触发一个函数,该函数调用php脚本来删除该特定图像,而无需重新加载页面。使用xmlhttp.xml可以很好地工作 但是图像列表不会自动刷新。正如刚才删除的图像一样,当我将鼠标悬停在元素上,直到刷新页面

对不起,我的问题太长了。我会尽力解释的

我创建了一个图像列表,当您将鼠标悬停在某个元素上时,这些图像是可见的(使用css) 每个图像也是一个单选按钮,可作为表单的一部分进行选择和使用。 所有图像基本上都是某个目录中的图像,您也可以上传到该目录

我已经设法在每个图像旁边添加了一个“删除”按钮,该按钮将触发一个函数,该函数调用php脚本来删除该特定图像,而无需重新加载页面。使用xmlhttp.xml可以很好地工作

但是图像列表不会自动刷新。正如刚才删除的图像一样,当我将鼠标悬停在元素上,直到刷新页面,然后刷新列表时,它仍然可见

显然我不想刷新页面,这就是使用ajax的全部意义所在。你知道我能做什么吗?代码如下:


函数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);
}
?>