2016-07-13 4 views
0

Ich möchte einen Wert zurück zu AJAX vom Controller zurückgeben, wenn und wenn die E-Mail gesendet wird. Im Folgenden finden Sie einen Code.Wie man zurückkommt, wenn E-Mail erfolgreich gesendet wird oder Fehler in Codeigniter AJAX

Im Folgenden Code möchte ich die Flash-Daten in Sitzung setzen und es sollte die entweder der Bedingung festgelegt und es in AJAX Rückruf

COntroller

public function send_reply(){ 
     $data = array(
     'from_email' => "[email protected]", 
     'recipient' => $this->input->post('recipient'), 
     'from_name' => "jeeva", 
     'subject' => $this->input->post('subject'), 
     'message' => $this->input->post('message'), 
     ); 

     echo json_encode($data); 
     $this->load->library('email'); 

     $this->email->from($data['from_email'], $data['from_name']); 
     $this->email->to($data['recipient']); 
     $this->email->subject($data['subject']); 
     $this->email->message($data['message']); 

     //Send mail 
     if($this->email->send()) { 
      $this->session->set_flashdata("email_sent","<span> * Email sent successfully. </span> "); 

     //$this->load->view('adminhp'); 
     } else { 

      $this->session->set_flashdata("email_sent","<span> * Error in sending Email.</span> "); 
     // $this->load->view('adminhp'); 


     } 
     } 

Ajax-Code

// Ajax post for email sending 
$(document).ready( function() { 
$(".mailsub").click(function(event) { 

event.preventDefault(); 
var recipient = jQuery(this).closest('form').find('input.recipient').val(); 
var subject = jQuery(this).closest('form').find('input.subject').val(); 
var message = jQuery(this).closest('form').find('textarea.message').val(); 

jQuery.ajax({ 
type: "POST", 
url: "<?php echo base_url(); ?>" + "index.php/user_authentication/send_reply", 
dataType: 'json', 
data: {recipient: recipient, subject: subject, message:message}, 
success: function(result) { 
if (result) 
{ 
// Show Entered Value 
jQuery("div#result").show(); 
jQuery("div#rslt").html("Sent Successfully"); 
console.log("Success"); 

} 
} 
}); 
}); 
}); 

Ich möchte es die Fla sh Daten in folgendem Code

echo "<br/>"; 
     echo "<div id='result' style='display: none'>"; 
     echo "<div id='rslt' style='display:inline'></div>"; 
     // echo $this->session->flashdata('email_sent'); 
     echo "</div>"; 
     echo "<br/>"; 
+0

Das Setzen von 'flash_data' wird nicht helfen, Ihr Ziel zu erreichen. Sie müssen vom Controller für den Zugriff durch "Ajax" echo. Nachdem Sie von PHP geantwortet haben, können Sie den Wert mit 'alert (result)' innerhalb des 'ajax success' testen. – Arun

+0

Erfolg ist in Ordnung. Was passiert, wenn die E-Mail nicht gesendet wird? kannst du mir bitte einen schnipsel geben. das wäre sehr hilfreich – Jeeva

+0

Um Flashdata zu verwenden, sollten Sie 'redirect()' –

Antwort

1

FIRST in der Steuerung müssen Sie die Nachricht echo

$msg = ''; 
if($this->email->send()) { 
    $msg = 'Email sent successfully'; 
} else { 
    $msg ='Error in sending'; 
    } 
echo $msg;die; 

ZWEITER in Ajax nur die respone zu dem entsprechenden div hinzufügen:

success: function(result) { 
      if (result) 
      { 
       console.log(result); 
       jQuery("div#result").show(); 
       jQuery("div#rslt").html(result); 

      } 
+0

verwenden, leider passiert nichts mit diesem Code. Aus dem Code wurde die Meldung "Gesendet erfolgreich" angezeigt, auch wenn die Mail nicht gesendet wurde. Jede Korrektur in Ihrem Code vorgenommen werden, Herr! – Jeeva

+0

verwenden Sie diesen Code und wenn es immer Nachricht anzeigen "E-Mail erfolgreich gesendet" dann Problem in der Emai-> send() die immer zurück, auch wenn keine E-Mail gesendet wird – pradeep

+0

Entschuldigung ich vermute, dass Sie meinen Kommentar verwechselt ..from Code nichts ist passiert .. ist leer. ich meinte von meinem code was ich in der obigen Frage gepostet habe immer benutzt um "erfolgreich gesendet" zu zeigen. Ihr Code tut nichts, obwohl meine Nachricht an den Empfänger gesendet wird. Alle Änderungen, die Sie in Ihrem Code vornehmen müssen. – Jeeva

Verwandte Themen