簡體   English   中英

使用ajax提交表單后無法顯示成功消息

[英]unable to show success message after submitting a form using 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'] = 'asdsdsd@gmail.com';
               $config['smtp_pass'] = 'sdsfsdfsdfsdfsds'; 
               $this->load->library('email', $config);
               $this->email->set_newline("\r\n"); 
               //$this->email->from($sendersemail, $fname);
               $this->email->to('ssdd@myemil.com');     
                    $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>

因此,我猜測這是使用phpmailer庫,您是否已安裝該庫(可能默認情況下取決於您的平台)

我能看到的第一件事是未定義$sendersemail 嘗試插入字符串而不是變量。 phpmailer庫非常容易發生錯誤,我也永遠無法弄清楚如何判斷錯誤在哪里!

如果那不起作用,請嘗試在您認為給您錯誤的那行之后輸出到控制台。 如果您使用:

echo(“電子郵件已發送”);

然后,在處理代碼時,您應該在瀏覽器控制台中看到它。 希望您能看到錯誤從何而來。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM