2016-09-18 10 views
0

저는 PHP와 AJAX로 문의 양식을 작성하려고합니다. 이메일은 전송하고 모든하지만 항상AJAX를 통해 PHP 파일에서 데이터를 가져 오는 방법은 무엇입니까?

"Message Sent!" 그래서 나는 내 PHP 스크립트의 끝이 쓴 HTML 초래한다 "true" 말한다 심지어 콘솔에서 "Failed to send!"을 말한다 :

if (!$mail->send()) { 
     echo $mail->ErrorInfo; 
    } else { 
     echo "true";  
} 

하고이해야 AJAX를 통해 출력 데이터가 올바른 것임을 의미합니다.

   ajax.SetText("Sending..."); 
       $.post("sendmail.php", { 
        name: userName, email: userEmail, comments: userComments, business: currentBusiness, website: currentWebsite 
       }, function(data) { 
        if(data == "true") { 

         ajax.SetText("Sent!"); 
         console.log(data); 


         $.get("sent.html", function(sentData){ 

          $("#content").html(sentData); 

         }); 

        } else { 
         ajax.SetText("Send mail"); 
         console.log(data); 
         $.get("unsent.html", function(sentData){ 

          $("#content").html(sentData); 

         }); 


        } 

        ajax.isSubmiting = false; 
       }); 

이 이메일은 내가 그럼 내가 메시지를 보낸 "같은 페이지에서 appropiate 정보를 넣을 수있는 반환"true "로되고 싶은 보내 그래서 기본적으로 경우 jQuery를^

입니다! " 그러나이 경우에는 보내거나 성공하지 못했지만 사실을 반환하지 않습니다. 나는 또한 PHP 파일에서 print_r("true")die("true")을 시도했지만 여전히 작동하지 않습니다. 아무도 이유를 아나요? 어떤 것이 든 고맙게 여길 것입니다, 감사합니다.

답변

2

시스템은 "true"을 (를) 키워드로 간주합니다. OK 또는 뭔가 넣어보십시오. 또한 여분의 줄을 출력하고 있지 않은지 확인하십시오. .trim()으로 확인하면됩니다. console

은 내가 을 만들어 :

console.log(encodeURI(data)); 

이 당신에게 비슷한을 줄 수 있습니다

if (data.trim() == "true") { 

는, 문제의 같은 종류를 확인 encodeURI() 기능을 사용하여 콘솔에 시도하려면 출력에 줄을 입력하십시오.

data == "true" 

그래서 당신이 여기에 trim() 기능을 사용해야 할 수도 있습니다 : 당신이 선택하면이 일치하지 않을 수 있습니다. 자세한 내용은 아래 봐 :

console

나는 강력하게이 사건이 될 것입니다 생각합니다. :)

+0

나는 그것도 작동하지만 똑같은 일이 일어날 것이라고 생각. 그리고 콘솔에서 그것은 사실이라고 말합니다. 나는 매우 잃어버린 것입니다. –

+0

콘솔이 사실입니까? 당신은'console.log (encodeURI (data));를 했습니까? 이것의 결과는 무엇입니까? –

+1

문제를 발견했습니다! 그래서 스크립트에서 (나는 PHPMailer를 사용하여) "$ mail-> SMTPDebug = 2;"라는 코드 행을 가졌습니다. 그리고 그것을 제거하자마자 그것은 완벽하게 작동했습니다. 감사! –

관련 문제