2013-08-14 4 views
0

폴더에 저장된 이미지를 표시 및 삭제하려고하지만 각 이미지를 제거하는 JS 코드를 실행할 수 없습니다.PHP jquery ajax 폴더의 이미지 링크 해제가 작동하지 않습니다.

의 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 방법 사용, 삭제, 편집 등. 그러나 여기서 문제가 시작되었습니다. 고맙습니다. 제 영어에 대해 사과드립니다.

+0

오류가 있습니까? 올바른 경로? 폴더에 대한 사용 권한? – John

+0

안녕하세요 @ 존 예 크롬 죄송합니다. Uncaught ReferenceError : png가 정의되지 않았습니다. www.magzineapp.com/cloud/:1 onclick – santyas

+0

콘솔에 '확인'이 표시되어 있습니까? – John

답변

1

나는

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

이 매개 변수를 전달하거나 json arrays로 전달 고려할 수 있습니다, 문제는 당신이 전달하는 배열,

에 한번 사용으로 생각합니다.

+0

다시 한번 감사 드리며, var parametros = { "name_only": name_only, "ext": ext};'와'data : {name_only : name_only, ext : ext} '의 차이점은 무엇입니까? – santyas

+0

실제로 배열을 사용하는 경우 json 배열로 전달해야한다고 생각합니다. 대답에 대한 링크를 추가했습니다. 따옴표가 필요하지 않을 수도 있습니다. 나는 항상 내가 제안한 방법을 사용하기 때문에 확신 할 수 없다. –

+0

ok! 고맙습니다! – santyas

0

당신은 내가 $ 내선 반복 생각 deletefile.php

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

를 추가 할 수 있습니다. 그러나 나는 확실하지 않다. 이 자바 스크립트 오류이기 때문에

+0

감사하지만이 파일은 잘 작동합니다. – santyas

2

는이 코드 라인을 살펴 : 당신은 자바 스크립트에 인용 부호를 추가해야

<img src=\"../uploads/files/" .$name_only.".".$ext. "\" width=\"30\" /> 
     <a onclick=\"DeleteImage('".$name_only."','".$ext."'); return false;\" href=\"javascript:;\">X</a> 
     <br /> 

.

+0

이것은 나를 도왔습니다! 덕분에 – santyas

+0

그 코드 라인이 원래 게시물에서와 같이 작동하는 것처럼 보입니다. 나는 여기에 그것을 시도 http://writecodeonline.com/php/ –

+0

@ JustinWyllie 예, PHP 오류가 아니지만 위에 게시 된 자바 스크립트 오류가 아니었다. – benestar

1

답변을 제공하는 것이 실제로 가능하지 않다고 생각합니다. 문제는 어디에서나 발생할 수 있습니다. 나는 다음을 고려할 것이다 : i. 이미지가 페이지에 표시됩니까? ii. DeleteImage에 디버그 지점을 넣고 실제로 매개 변수가 무엇인지 확인하십시오. 이것도 호출되는지 확인합니다. iii. 아약스 전화도 만들어 졌나요? 다시 Firebug 또는 Chrome 개발자 도구가 여기에 도움이 될 것입니다. 네트워크 탭과 XHR 옵션을보십시오. iv. 승인. 그래서 우리는 이것을 멀리 가지고 있습니다. 아약스 처리기에서 게시물을 에코 - 거기에 올바른 매개 변수를 전달 했습니까? v. unlink는 무엇을 반환합니까? true 또는 false를 반환합니다. false의 경우는 가능성이있는 패스 또는 액세스권에 문제가 있습니다.

기본적으로 내 질문에 디버깅 방법에 대한 지식이 부족한 것 같습니다.

+0

을 관찰 해 주셔서 감사합니다. 최선을 다하려고 노력하고 있습니다. 1 - 그림이 좋아 보이는데, URL은 괜찮습니다. 2 - 어떻게 넣을 수 있습니까? 3 - 응용 프로그램에서 가져 와서 js 코드를 실행했습니다. 하지만 아무 것도 삭제하고 싶지 않을 때. 4 - 매개 변수 내 질문에, 내 코드의 복사본입니다,하지만 디버거에서 아무런 동작이 있습니다. 5 - delete.php에서 어떤 반환 값도 사용하지 않았습니다 :/ – santyas

1
  1. 좋습니다.

  2. Chrome을 사용하는 경우. F12 키를 누릅니다. 소스를 선택하십시오. 왼쪽에있는 작은 화살표를 클릭하십시오. DeleteImage가 포함 된 JS 파일을 선택하거나 인라인 Javascript 인 경우 페이지를 선택하십시오. 파일을 엽니 다 (디버거에서). 오른쪽에있는 시계 식을 사용하여 + 기호를 클릭하고 매개 변수를 입력하여 실제로 매개 변수가 무엇인지 확인하십시오. 그런 다음 X를 클릭합니다. 디버거가 작동하여 중단 점을 넣는 줄에서 멈 춥니 다. (이제 시계 식을 오른쪽에서 살펴보고 parametros와 같이보고 싶은 변수의 이름을 입력하십시오.)

  3. '아무 반응 없음': 정말입니까? 이제 Chrome 디버거를 열고 네트워크 탭을 클릭합니다. XHR (Ajax 요청 만 보임)을 클릭하십시오. 오른쪽 패널에서 Headers and Response를보십시오. 이제 무슨 일이 일어 났는지 알 수 있습니다. 아약스 호출이 만들어졌습니다 (내가 DeleteImage가 들어있는 파일 앞에 jQuery를로드했다고 가정합니다)? 무엇이 돌아 왔습니까?

    • - 이제
  4. 이에 삭제 파일을 수정 아약스 호출의 응답을 볼 수있다 : $ 결과 = 링크 해제 ($를 pathimages $ name_only $ 내선... "."); echo $ result. 그것은 사실입니까 거짓입니까? $ _POST에 var_dump()를 실행합니다. 즉, 삭제 파일에서 var_dump ($ _ POST)를 실행하고 응답에서 얻은 내용을 확인하십시오 .- 원하는 것을 게시 했습니까? 당신은 물론 시도 할 수

또 다른 것은 알려진 매개 변수를 사용하여 브라우저의 주소 표시 줄에 직접 그 PHP 삭제 스크립트를 호출 - 그 부분이 작동하는지 확인합니다.

+0

이제 디버거에서 솔루션을 테스트합니다. 하지만이 줄을 변경했습니다 :'parametros // data : {name_only : name_only, ext : ext} '그리고 잘 동작합니다. 나도 몰라, 어떻게 된거야! – santyas