2014-01-05 95 views
0

我在提交ajax表單之後使用ajax發送電子郵件。使用ajax提交表單後無法顯示成功信息

這裏是我的php控制器代碼: 如果我保持電子郵件發送代碼在這個函數內然後SUCCESS消息不顯示在html頁面上。但是,如果我從該功能中刪除Email sending代碼,則會顯示SUCCESS消息。

public function sendedits() 
    { 
    $this->load->library('form_validation'); 
    $this->form_validation->set_error_delimiters('<li class="errorlist">', '</li>')->set_rules('menu_name', 'Title', 'trim|required|min_length[2]|max_length[255]|xss_clean'); 

     //user is logged in proceed the next work 
      if (!$this->form_validation->run()) 
      { //False 
       $this->_status['status'] = "error"; 
       $this->_status['message'] = $this->load->view('commonfiles/ajax_error_display_1', '', TRUE); 
      } 

      else if ($this->form_validation->run() && $this->input->post('myId')=='')//myId=just for checking robot or human 
      {  //TRUE block 
       $fname=$this->input->post('menu_name'); 
       $sendersemail=$this->input->post('changes_made');  
       $intrested_message=$this->input->post('content'); 
       $config['protocol'] = 'smtp'; 
       $config['smtp_host'] = 'ssl://smtp.googlemail.com'; 
       $config['smtp_port'] = 465; 
       $config['smtp_user'] = '[email protected]'; 
       $config['smtp_pass'] = 'sdsfsdfsdfsdfsds'; 
       $this->load->library('email', $config); 
       $this->email->set_newline("\r\n"); 
       //$this->email->from($sendersemail, $fname); 
       $this->email->to('[email protected]');  
        $this->email->subject('User Edited article of : '.$fname); 
        $message = '<html> 
             <head> 
              <title></title> 
              <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
             </head> 
             <body> 
             <table cellspacing="0" cellpadding="0" style="border-collapse:collapse;width:98%;background-color:whitesmoke" border="1"> 
              <tbody> 
               <tr> 
                 <td colspan=2><h2> '.$fname.'</h2></td> 
               </tr> 
               <tr> 
                <td width=50%>First Name </td> 
                 <td width=50%>'.$fname.'</td> 
               </tr>  
               <tr> 
                <td width=50%>Email </td> 
                 <td width=50%>'.$sendersemail.'</td> 
               </tr>  

                <tr> 
                <td width=50%>Message </td> 
                 <td width=50%>'.$intrested_message.'</td> 
               </tr> </tbody> <table> </body></html> '; 
       $this->email->message($message); 
       $this->email->send(); 
       $this->_status['message'] = 'Thankyou for your edits. We will review it before publishing.'; 
       $this->_status['status'] = "success"; 
      } 
      echo json_encode($this->_status);  
    } 

的Ajax功能提交表單

<script type='text/javascript'> 
    $(document).ready(function() { 

     var _status = $('#status'); 
     $('#sub2').click(function(e) { 

      _status.html(''); 
      var postData = $('#form_id').serializeArray(); 
      var formURL = $('#form_id').attr("action"); 
      $.ajax({ 
       url: formURL, 
       type: "POST", 
       data: postData, 
       dataType: "json", 
       success: function(dat) { 
        if (dat.status === 'success') { 
         _status.html('<span class="success">' + dat.message + '</span>'); 
        } 
        else if (dat.status === 'fail') { 

        } 
        else 
        { 

         _status.html('<span class="err">' + dat.message + '</span>'); 

        } 
       }, 
       error: function(e) { 
        alert("Ooops! Try again later or else sends us message regarding this issue. Thankyou!"); 
       } 
      }); 

     }); 

    }); 

</script> 

回答

0

因此,進出口猜測這是使用PHPMailer的圖書館,你有安裝

(它可能會根據你的平臺來爲默認)我可以看到的第一件事是$sendersemail未定義。嘗試插入一個字符串而不是變量。 phpmailer庫對於修復錯誤非常糟糕,我永遠無法知道如何判斷錯誤在哪裏!

如果這不起作用,請在您認爲給出錯誤的行後嘗試輸出到控制檯。如果您使用:

echo(「email sent」);

然後,您應該在瀏覽器控制檯中看到它正在處理代碼。希望你能看到錯誤來自哪裏。

+0

請問您可以從D:\ xampp \ htdocs \ system \ libraries \ Email.php中發佈第1362行嗎? (和一些周圍的線) – JackalopeZero

+0

看起來像來自領域絕對是問題。你有沒有嘗試在from字段的變量中插入一個字符串? – JackalopeZero

+0

也許from字段需要是有效的電子郵件地址? – JackalopeZero

相關問題