2012-09-12 2 views
0

AJAX 및 PHP가있는 폴더에서 선택한 이미지를 삭제하려고합니다. 어떤 오류도 보지 못했습니다. 제가 가지고있는 코드에 대한 당신의 의견을 말해 주시겠습니까? 사전에 덕분에링크를 사용하여 AJAX 및 PHP로 이미지를 삭제하는 중 오류가 발생했습니다.

AJAX 코드 :

function createAjax() 
{ 
    var objAjax = false; 

    if (window.XMLHttpRequest) 
    { 
     objAjax = new XMLHttpRequest(); 
    } 
    else 
    { 
     if (window.ActiveXObject) 
     { 
      try 
      { 
       objAjax = new ActiveXObject ("Msxml2.XMLHTTP"); 
      } 
      catch (e) 
      { 
       try 
       { 
        objAjax = new ActiveXObject ("Microsoft.XMLHTTP"); 
       } 
       catch (e) 
       { 
       } 
      } 
     } 
     else 
     { 
      objAjax = false; 
     } 
    } 
    return objAjax; 
} 

function eliminar(id_foto) 
{ 
    var ajax = createAjax(); 
    ajax.open("POST", "delete_img.php",true); 

    ajax.onreadystatechange=function() 
    { 
     if (ajax.readyState == 4) 
     { 
       //AQUI DEBES DE PONER EL CODIGO RESPECTIVO PARA ELIMINAR DEL NAVEGADOR 
       // EL DIV EN CUESTION o simplemente hacer su contenido vacio, que es lo que hare 
      document.getElementById("delete"+id_foto).innerHTML = ""; 
      document.getElementById("div_mensajes").innerHTML 
     } 
     else 
     { 
      document.getElementById("div_mensajes").innerHTML = "<br><center>Eliminando<img src = 'images/ajax-loader.gif' /></center>"; 
     } 
    } 

    ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
    ajax.send("id_foto="+id_foto); 
} 

HTML과 PHP 코드는 먼저 표시 :

$handle = opendir(dirname(realpath(__FILE__)).'/uploads/'); 
while($file = readdir($handle)) { 

if($file !== '.' && $file !== '..') { 
    if(file_exists('uploads/Thumbs.db')){ 
     unlink('uploads/Thumbs.db'); 
    } 
    echo'<div class="gallery-item" id="delete'.$file.'"> 
      <p class="gallery-clean"> 
      <a class="image" rel="'.$file.'" rev="'.$file.'" href="uploads/'.$file.'" title=""> 
      <img src="uploads/'.$file.'" alt="'.$file.'"></a></p> 
     <div> 
      <a class="ico ico-delete" rel="9" rev="2" href="#" onclick = "eliminar_ajax('.$file.');"><span></span></a> 
      <a class="ico ico-edit" rel="9" href="#"><span></span></a> 
      <a class="ico ico-resize" rel="9" href="#"><span></span></a> 
      <a class="ico ico-full" rel="group" href="#"><span></span></a> 
     </div></div>'; 
    } 
} 

PHP 코드는 파일을 삭제 :

$dir = "uploads/"; 
$file = $_POST['id_foto']; 
$img = $dir.$file; 
unlink($img); 

좋아! 나는 그것을

 #delete.'<?php echo $file?> 
+1

어디에서 실패합니까? HTML이 예상대로 작동합니까? Ajax가 예상대로 요청을 보냅니 까? 당신은 PHP에 도달합니까? 당신은'unlink()'의 결과를 덤프 할 수 있습니까? : var_dump (unlink ($ img)); – Tchoupi

+1

순수 자바 스크립트에 대해서는 아무것도 없지만 (특히 AJAX 호출을 할 때) jQuery를 사용하는 것이 더 쉽습니다. – Chris

+0

while 루프 상단에''Thumbs.db ''테스트가 존재합니까? 해당 디렉토리에있는 모든 단일 파일에 대해 db 파일을 테스트하고 연결 해제합니다. 동일한 파일을 반복해서 테스트합니다. ** 정말로 ** 삭제가 확실합니까? 대부분의 파일은 링크를 해제 한 후 자연스럽게 원래 위치로 되돌아가는 경향이 없습니다. –

답변

0

전화 그리고 이미지의 확장은 어떤 경우

  script type="text/javascript"> 
      function deleteFile(fname,directory) 
      { 
     $.ajax({ url: "delete_img.php", 
     data: {"file":fname,"directory":directory}, 
     type: 'post', 
     success: function(output) { 
     alert(output); 
     $("#delete"+file).remove(); 
      } 
      }); 
     } 
     </script> 

이 어떻게 사업부를 제거 할 수 있습니다 :이 사용하여 해결했다? 그래서 $file .= ".whateverextensionithas";

더 명확 좋아 $file에 추가

$dir = "uploads/"; 
$file = $_POST['id_foto']; 
$file .= ".whateverextensionithas"; 
$img = $dir.$file; 
unlink($img); 

또는 실제 명확하게하기

$dir = "uploads/"; 
$ext = ".whateverextensionithas"; 
$file = $dir.$_POST['id_foto'].$ext; 
if(file_exists($file)) 
    unlink($file); 
else 
    echo "file does not exist"; 
+0

나는 그것을 시도했다 : $ img = $ dir. $ file. "jpg"; 자바 스크립트 호출일까요? – charlyta

+0

그런 다음'$ img = $ dir. $ file. ".jpg"; ' – dbf

+0

결과가 없습니다. 나는 뭔가를 잃어 가고 있다고 생각한다 : onclick = "eliminar_ajax ('. $ file.');" – charlyta

0

이 코드 조각을 시도해보십시오

if(isset($_POST['id_foto'])){ 
    $dir = "uploads/"; 
    $file = $_POST['id_foto']; 
    $img = $dir.$file; 

    $f = fopen($dir."post.txt", 'w+'); 
    fwrite($f, $img); 
    fclose($f); 
} 

post.txt 검사 당신이 얻는 결과물의 종류를 확인하십시오.

+0

post.txt 파일은 비어있다 – charlyta

+0

하지만 존재 하는가? hmm ... $ _POST [ 'id_foto']이 (가) 제출되었지만 비어 있습니다 :/ – Eugen

+0

이 줄이 맞습니까? onclick = "eliminar_ajax ('. $ file.');"> – charlyta

관련 문제