2013-07-11 17 views
12

Ho cercato un sacco di tutorial con metodi POST e ho visto anche qui le risposte alle domande, ma il mio POST continua a non funzionare ... Ho pensato di postarlo qui se vedete qualcosa che non faccio 't!JQuery Ajax POST in Codeigniter

miei 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; 
}); 
}); 

mio punto di vista - file 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> 

Ultima mio controllo - file 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

stai riscontrando errori .. ti preghiamo di controllare la console degli strumenti per sviluppatori – bipen

+0

sta andando al controller? che errore lancia? –

+0

dove definisci 'url: base_url', credo che questo sia il tuo problema. – Boris

risposta

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

Come hai perso la parentesi. Il javascript si aggiorna semplicemente –

+1

Sì, grazie mille, questo è stato il mio problema ... l'ho cercato per ore! Il controller – Dennis

+0

restituisce l'oggetto codificato json, come posso ottenere questo oggetto nello script php ?, significa come posso passare un oggetto json da una funzione riuscita di jax in uno script php. – 151291

2

La questione è già stato risposto, ma ho pensato che vorrei anche farvi sapere che piuttosto che usare il nativo di PHP $ _POST Mi raccomando di utilizzare il CodeIgniter input class modo che il codice di controllo sarebbe

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

Sarebbe utile se tu spiegassi perché si dovrebbe utilizzare la classe di input codeigniter, cioè quali sono i suoi vantaggi rispetto a $ _POST? – haakym

+0

Il vantaggio dell'utilizzo della classe di input dell'elemento della configurazione è che include xss_filtering automatizzato (a meno che non sia disabilitato nella configurazione) – 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

In codeigniter non c'è bisogno di sennd "dati" nel metodo ajax post .. ecco l'esempio.

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

    }); 

Nota: nella url, il software è il nome del controller, la ricerca è il nome della funzione e searchThis è la variabile che I m invio.

Ecco il controller.

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

Spero che tu possa avere un'idea per il tuo lavoro.