2013-07-11 19 views
12

Przeszukałem wiele samouczków metodami POST i widziałem odpowiedzi na te pytania również tutaj, ale mój POST nadal nie działa ... Pomyślałem, że powinienem opublikować to tutaj, jeśli zobaczycie coś, co daję "t!JQuery Ajax POST w Codeigniter

Moi js - messages.js:

$(document).ready(function(){ 

    $("#send").click(function() 
    {  
    $.ajax({ 
     type: "POST", 
     url: base_url + "chat/post_action", 
     data: {textbox: $("#textbox").val()}, 
     dataType: "text", 
     cache:false, 
     success: 
       function(data){ 
       alert(data); //as a debugging message. 
       } 

    return false; 
}); 
}); 

Moim zdaniem - chat.php:

<?php $this->load->js(base_url().'themes/chat/js/messages.js');?> //i use mainframe framework which loading script this way is valid 



<form method="post"> 
    <input id="textbox" type="text" name="textbox"> 
    <input id="send" type="submit" name="send" value="Send"> 
</form> 

Ostatni Mój kontroler - chat.php

//more functions here 

function post_action() 
{ 
    if($_POST['textbox'] == "") 
    { 
     $message = "You can't send empty text"; 
    } 
    else 
    { 
     $message = $_POST['textbox']; 
    } 
    echo $message; 
} 
+0

czy dostaję jakieś błędy .. proszę sprawdzić konsolę narzędzi programistycznych – bipen

+0

czy to będzie kontroler? jaki błąd rzuca? –

+0

gdzie definiujesz 'url: base_url', uważam, że to twój problem. – Boris

Odpowiedz

20
$(document).ready(function(){ 

    $("#send").click(function() 
    {  
    $.ajax({ 
     type: "POST", 
     url: base_url + "chat/post_action", 
     data: {textbox: $("#textbox").val()}, 
     dataType: "text", 
     cache:false, 
     success: 
       function(data){ 
       alert(data); //as a debugging message. 
       } 
      });// you have missed this bracket 
    return false; 
}); 
}); 
+0

Jak brakowało wspornika. Javascript po prostu odświeża –

+1

Tak, dziękuję tak bardzo, że to był mój problem ... Szukałem go przez wiele godzin! – Dennis

+0

kontroler zwraca zakodowany obiekt json, w jaki sposób mogę uzyskać ten obiekt do skryptu php ?, to znaczy jak mogę przekazać obiekt json z funkcji ajax ajax do skryptu php. – 151291

2

Pytanie zostało już odpowiedział, ale myślałem Chciałbym również poinformować, że zamiast używać rodzimych PHP $ _POST polecam użyć CodeIgniter input class więc kod kontrolera będzie

function post_action() 
{ 
    if($this->input->post('textbox') == "") 
    { 
     $message = "You can't send empty text"; 
    } 
    else 
    { 
     $message = $this->input->post('textbox'); 
    } 
    echo $message; 
} 
+0

Byłoby przydatne, gdybyś wyjaśnił, dlaczego należy używać klasy wejściowej codeigniter, tj. Jakie są jej zalety w porównaniu z $ _POST? – haakym

+0

Zaletą korzystania z klasy wejściowej CI jest uwzględnienie zautomatyzowanego filtrowania xss (o ile nie jest wyłączone w konfiguracji) – Dennis

2
<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 

    class UserController extends CI_Controller { 

     public function verifyUser() { 
      $userName = $_POST['userName']; 
      $userPassword = $_POST['userPassword']; 
      $status = array("STATUS"=>"false"); 
      if($userName=='admin' && $userPassword=='admin'){ 
       $status = array("STATUS"=>"true"); 
      } 
      echo json_encode ($status) ;  
     } 
    } 


function makeAjaxCall(){ 
    $.ajax({ 
     type: "post", 
     url: "http://localhost/CodeIgnitorTutorial/index.php/usercontroller/verifyUser", 
     cache: false,    
     data: $('#userForm').serialize(), 
     success: function(json){       
     try{   
      var obj = jQuery.parseJSON(json); 
      alert(obj['STATUS']); 


     }catch(e) {  
      alert('Exception while request..'); 
     }  
     }, 
     error: function(){      
      alert('Error while request..'); 
     } 
}); 
} 
3

W codeigniter nie ma potrzeby, aby sensnd "danych" w ajax post metody .. tutaj jest przykład.

searchThis = 'This text will be search'; 
    $.ajax({ 
     type: "POST", 
     url: "<?php echo site_url();?>/software/search/"+searchThis, 
     dataType: "html", 
     success:function(data){ 
     alert(data); 
     }, 

    }); 

Uwaga: w adresie URL, oprogramowanie to nazwa kontrolera, wyszukiwania jest nazwa funkcji i searchThis jest zmienna I m wysyłania.

Oto kontroler.

public function search(){ 
    $search = $this->uri->segment(3); 
     echo '<p>'.$search.'</p>'; 
    } 

Mam nadzieję, że możesz uzyskać pomysł na swoją pracę.