2010-08-11 3 views
0

페이지를 다시로드하지 않고 AJAX를 사용하여 연락처를 제출하고 있지만 메시지 본문을 보내려고 시도 할 때를 제외하고는 아무 것도 보내지 않습니다. to와 subject 부분은 잘 작동하고, 몸이 보려고 할 때 나는 아무것도 볼 수 없습니다. 나는 그것을 strickly PHP 함수를 실행하고 본문을 작동 테스트, 그냥 페이지를 다시로드하고 난 왜 여기에 작동하지만, 아약스와 함께 모르겠어요. 누군가가 약간의 빛을 비출 수 있다면 그것은 좋을 것입니다, 고마워요. 그 도움을PHP 메일 기능 + ajax = 나를 좌절

<div class="divider" id="contact"> 
    <p class = "header"><a id="contactheader" name="gocontact">Contact</a></p> 
    <div id = "contactform"> 
     <form method = "post" id="contactform" action="<?php site_url()?>index.php/home/sendemail"> 
      <div id ="formtitles"> 
       <p class = "info">You:</p> 
       <p class = "info">Me:</p> 
       <p class = "info">Subject:</p> 
       <p class = "info">Body:</p> 
       <input id = "submit" type="submit" value="Send" /> 
      </div> 
      <div id ="formfields"> 
       <input id="you" type="text" name="you" /><br/> 
       <p class = "info">[email protected]</p> 
       <input id ="subject" type="text" name="subject" /><br/> 
       <textarea id = "contactbody" name="contactbody"></textarea> 
      </div> 
     </form> 
    </div> 
</div> 

감사합니다 도움이된다면

의 .js 여기

$(document).ready(function() { 

    $('#submit').click(function() { 

     var contactformdata = { 
      you: $('#you').val(), 
      subject: $('#subject').val(), 
      message: $('#contactbody').val(), 
     } 


     $.ajax({ 
      url: "http://www.trenthauck.com/index.php/home/sendemail", 
      type: 'POST', 
      data: contactformdata, 
      success: function() { 
       $('#contactheader').replaceWith("<p class='header'>Thanks</p>"); 
       $('#contactform').remove(); 
       $('#contactlink').remove(); 
       $(document).scrollTop(25); 
      } 
     }); 

     return false; 
    }); 
}); 

function sendemail(){ 
     $to = "[email protected]"; 
     $from = $this->input->post('you'); 
     $subject = $this->input->post('subject'); 
     $message = $this->input->post('contactbody'); 

     $tosend = "From: " . $from . "\nMessage: " . $message; 

     mail($to, $subject, $message); 

     $this->index(); 

    } 

그리고 양식을 PHP 함수 (BTW, CI를 사용)입니다

jquery에서
+0

? 또한'mail()'호출의 반환 값을 확인하십시오. 거짓이면 뭔가 잘못되었습니다. (행운을 빈다 * 알아 낸다. 그러나 내장 된 메일 오류 검사는 존재하지 않는다.) – Charles

답변

4

당신 변수 'message'를 사용하여 메시지를 보냈지 만 PHP에서는 'contactbody'을 사용하여 메시지를 선택합니다.

변화에서 PHP :

$message = $this->input->post('contactbody'); 

에 : 당신이 인덱스를 호출하기 전에 중지하고 메시지 본문을 인쇄 할 때 어떻게됩니까

$message = $this->input->post('message'); 
+0

이것은 문제가되지 않는다. 그는 textarea 'contactbody'라는 이름을 붙이므로 잘 작동합니다. – Nacho

+0

@ 이그나시오, 제 생각에 그것이 문제입니다. 필드에서 데이터를 수집하는 jquery에는 문제가 없습니다. 그것은 그것을 '메시지'라고 부르며 PHP에 게시하는 것입니다. 그는 다음과 같이 변경할 수 있습니다 : "$ ('# contactbody') .Val :"contactbody : $ ('#contentbody') .Val() "을 jquery에서 바꿀 수 있습니다. downvote 주셔서 감사합니다 :) –

+0

개인적으로 생각하지 마십시오. downvote 그냥 "이 대답은 유용하지 않습니다"입니다 :) 어쨌든, 나는 다시 읽고 당신이 옳다고 생각합니다. 미안, 친구. – Nacho