2014-11-28 4 views
0

안녕하세요 여러분, 저는 ajax 함수 호출에 문제가 있습니다. 나는 "delete.php"페이지에 접근하려고 시도하지만 결코 호출되지 않습니다. 나는 버튼으로 다음 전화Ajax 함수가 호출되지 않았습니다.

<script src="//code.jquery.com/jquery-1.11.0.min.js"></script> 
     <script> 
      function deleteSpark(sparkID) { 

        var answer = confirm(sparkID); 
        //Send the user to the correct page when he presses 'yes/oke' 
        if(answer==0){ 
         var ajax= $.ajax({ type: "post", 
          data: {sparkid: sparkID }, 
          url: 'delete.php' 
         }); 
         ajax.done(function(){ 
          window.location.href = "/sparks.html"; 
         }); 

         ajax.fail(function(){ 
          window.location.href = "/index.html"; 
         }) 
        } 
        /* OR*/ 



        /* this method after all other code in handler*/ 
       // window.location.href = "/delete.php?sparkid=" + sparkID; 
       // window.location.href = "/sparks.html"; 
       //Returns false so no events will be executed. 
       return false; 

      } 

: 여기 내 스크립트 코드 삭제

그리고 난 이렇게 "delete.php"내 PHP 파일 8 : $ sparkID = $ _POST [ 'sparkid' ];

하지만 결코 울리지 않으므로 작동하지 않을 다른 것들을 반향하려고 시도합니다. 누군가 나를 도울 수 있습니까?

+0

'confirm' 방법으로 조건을 변경합니다. 'if (answer == false)'를 실행 한 다음 실행하십시오. – JonnieJS

답변

1

아직 논평 할만한 평판이 부족합니다. 요소 (Firefox/Chrome)를 검사 한 다음 AJAX가 실행되는 동안 네트워크 탭을 볼 수 있습니까? 이것은 보내지는 데이터, 보내려는 페이지 등을 표시해야하며 디버그하는 데 도움이됩니다.

처음에는 절대 URL을 사용하여 올바른 페이지로 이동하는 것이 좋습니다. 거짓 반환 이벤트를 방지하기 위해 수없는 경우

감사합니다,

앤드류

1

는 내가 확인이 "예"하지 않을 때 당신은 반환이 거짓 원하는, 가정합니다. 그래서 저는 else 진술서에서 거짓을 반환했습니다.

@Sergey Yarotskiy이 지적한대로 if 수치가 0을 기다리고 있기 때문에 실제 문제입니다. 당신은 if(answer = confirm(sparkID)){과 같이 (만약 당신이 다른 곳에서 변수 답을 필요로한다면) 결합하거나 이렇게 필요하지 않다면 : if(confirm(sparkID)){을 결합 할 수 있습니다.

희망이 도움이 될 것입니다.

이이 문제를 해결해야합니다

<script src="//code.jquery.com/jquery-1.11.0.min.js"></script> 
     <script> 
      function deleteSpark(sparkID) { 
        //Send the user to the correct page when he presses 'yes/oke' 
        if(answer = confirm(sparkID)){ 
         var ajax= $.ajax({ type: "post", 
          data: {sparkid: sparkID }, 
          url: 'delete.php' 
         }); 
         ajax.done(function(){ 
          window.location.href = "/sparks.html"; 
         }); 

         ajax.fail(function(){ 
          window.location.href = "/index.html"; 
         }) 
        }else{ 
        return false; 
        } 

      } 
+0

왜 아무리 downvote? –

+0

죄송합니다, 대답은 완전히 잘못 되었기 때문에 downvoted. false를 반환하면 기본 동작이 방지됩니다. AJAX 이벤트 리스너가 응답을 기다리지 않습니다. 응답이 수신되면 (또는 오류) 콜백이 호출됩니다. 문제는 아약스가 전혀 호출되지 않았지만 return 문에는 호출되지 않는다는 것입니다. –

+0

@SergeyYarotskiy return false false를 기본값으로 설정합니다. 그렇습니다. 그러나 사실은 "default"이벤트가 없습니다. 거기에서 확인 이후 나는 OP가 받아 들여지지 않으면 페이지가 바뀔 것이기 때문에 확인이 받아 들여지지 않으면 OP가 false를 리턴하고 싶다고 생각했다. 게다가'if'라는 문장에서 기회를 눈치 챘 을까요? –

0

'확인'을 true 또는 0 대신 false를 반환합니다, 그래서 부울을 반환

if (answer) { 
    // do staff 
} 
+0

URL은 괜찮습니다. URL이 단지 http를 강제합니다. @Stef Van Gils의 URL은 ... – tkausl

+0

브라우저에서 URL을 열었을 때 (그냥 //) 파일로 리다이렉트하여 "file not found"를 반환했습니다. // // .... 브라우저 또는 서버 특정 수 있습니까? 나는 우분투에서 파이어 폭스를 사용하고있다. 방탄 코드를 원한다면 어떤 식 으로든 그러한 질문을 전혀 피하지 않을 이유가 있습니까? –

+1

이 URL은 직접 탐색하면 작동하지 않지만 이미지, CSS 또는 JS 용 HTML에서 사용하면 프로토콜 (HTTP 또는 HTTPS)이 자동으로 보존됩니다. 브라우저는 부품을 교차로드하는 것을 싫어하기 때문에 권장됩니다 (HTTP를 통한 HTTP, JS over HTTPS 또는 다른 방법). – tkausl

관련 문제