2016-08-31 3 views
-1

Ich brauche Hilfe. Ich bekomme Probleme bei der Rückgabe von Codeigniter. Wann immer, verwende ich exit; nach echo es funktioniert gut, aber wann immer ich versuche return true es funktioniert nicht.PHP nicht Rückgabewert ohne Exit-Funktion

Wie ich habe Kommentarcode in PHP Code. wenn i exit nach echo verwenden es funktioniert, aber wenn ich das nicht tun, dass es nichts

Ajax Anfrage

$('#social-form').on('submit', function(e){ 

    e.preventDefault(); 
    var str = $("#social-form").serialize(); 
    if (str === '') { 
     swal("Please Fill All Fields"); 
    } else { 
     $.ajax({ 
      type: "POST", 
      url: baseUrl + "/admin/social/", 
      data: str 
     }) 
     .done(function (data) { 
       console.log(data); 
       swal("Information", data, "info"); 
      }) 
     .error(function() { 
      swal("Oops", "We couldn't connect to the server!", "error"); 
     }); 
    } 
}); 

Codeigniter-3

public function social(){ 
    $name = $this->input->post('name'); 
    $profile = $this->input->post('profile'); 
    $this->form_validation->set_rules('name', 'name', 'required|trim'); 
    $this->form_validation->set_rules('profile', 'profile', 'required|trim'); 
    if ($this->input->post() && $this->form_validation->run() != FALSE) { 
     $this->load->model('Social_model','social'); 
     $this->social->update($name,$profile); 
     echo 1; 
     //exit; 
     //return true; 
    } 
    else 
    { 
     echo 0; 
     //exit; 
     //return false; 
    } 
} 
+0

Funktioniert nicht wie? –

+0

Ich habe versucht mit 'retuen' aber es wird nicht funktionieren. Danke für den Kommentar –

+1

Was soll es tun, was es nicht tut? Bitte ** [bearbeiten] ** Ihre Frage, um weitere Erklärungen des Problems hinzuzufügen. –

Antwort

1

CodeIgniter hat ein Layout zurückgibt, so nach der Ausgabe Eine Antwort könnten Ansichten sein, die nach Ihrer Antwort ausgegeben werden, wie z. B. eine Fußzeile oder eine Debug-Leiste.

Verwenden Sie Ihre Konsole, um den Statuscode der Antwort anzuzeigen. Beachten Sie auch, dass es in CodeIgniter nicht schlecht ist, nach AJAX-Aufrufen zu beenden, also sollten Sie vielleicht einfach einen AJAX-Antworthelfer schreiben, der all das für Sie erledigt (wie das Setzen der Kopfzeile und das Hinzufügen der exit).

+0

Vielen Dank für Ihren Rat. Ich werde mit deinen Ans gehen, aber lass mich ein paar Beispiele mehr bekommen, wenn du etwas Neues hast, wirst du auch eine tolle Antwort bekommen. –

+1

Ich würde auch empfehlen, dass Sie Ihren Antworttyp auf JSON in JavaScript festlegen und ein JSON-Ergebnis von PHP zurückgeben. Wie 'echo json_encode (array ('result', 1));' (und natürlich das 'exit()';)). Auf diese Weise erhalten Sie ein komplettes Antwortobjekt in JavaScript. – Tumtum

1

Sie müssen wahrscheinlich genauer sein, was Sie echo. Dies ist eine von mehreren möglichen Lösungen.

Controller

public function social(){ 
    $name = $this->input->post('name'); 
    $profile = $this->input->post('profile'); 
    $this->form_validation->set_rules('name', 'name', 'required|trim'); 
    $this->form_validation->set_rules('profile', 'profile', 'required|trim'); 
    if ($name && $this->form_validation->run() != FALSE) { 
     $this->load->model('Social_model','social'); 
     $this->social->update($name,$profile); 
     $out = json_encode(array('result' => 'success')); 
    } 
    else 
    { 
     $out = json_encode(array('result' => 'failed')); 
    } 
     echo $out; 
} 

Javascript

$('#social-form').on('submit', function (e) { 
    e.preventDefault(); 
    var str = $("#social-form").serialize(); 
    if (str === '') { 
     swal("Please Fill All Fields"); 
    } else { 
     $.ajax({ 
      type: "POST", 
      url: baseUrl + "/admin/social/", 
      data: str, 
      dataType: 'json' 
     }) 
      .done(function (data) { 
       console.log(data); 
       if (data.result === 'success') { 
        swal("Information", "Success", "info"); 
       } else { 
        swal("Information", "Failed", "info"); 
       } 
      }) 
      .error(function() { 
       swal("Oops", "We couldn't connect to the server!", "error"); 
      }); 
    } 
});