2013-07-11 25 views
12

POST yöntemleri ile çok fazla öğretici aradım ve sorularımı burada da yanıtladım ama POST'm hala çalışmıyor ... Ben bir şey görüyorsanız, buraya göndermem gerektiğini düşündüm 't!JQuery Ajax POST in Codeigniter

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

Bence - 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> 

Son My kontrolör - 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

Herhangi bir hatayla karşılaşıyor musunuz? Lütfen geliştirici araçları konsolunu kontrol edin – bipen

+0

denetleyiciye mi gidiyor? hangi hata atıyor? –

+0

Burada 'url: base_url' öğesini tanımlarsınız, bunun sizin sorununuz olduğuna inanıyorum. – Boris

cevap

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

Braketi kaçırdığınız için. Javascript sadece –

+1

yeniledi Evet, benim sorunum o kadar oldu ... Saatlerce aradım! – Dennis

+0

denetleyici json kodlu nesneyi döndürür, bu nesneyi php betiğine nasıl dönüştürebilirim ?, bir json nesnesini ajax başarı işlevinden php betiğine nasıl geçirebilirim. – 151291

2

soru zaten yanıtlandı ama ben de bu yüzden denetleyicisi kod olacağını bilmenizi o ziyade sana CodeIgniter input class kullanmak tavsiye doğal PHP $ 'POST kullanarak düşündüm

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

Neden birinin kodlu giriş sınıfını kullanması gerektiğini açıkladıysanız, yani $ _POST üzerindeki avantajları nelerdir? – haakym

+0

CI giriş sınıfını kullanmanın yararı, otomatik xss_filtering öğesinin eklenmesidir (yapılandırmada devre dışı bırakılmadığı sürece) – 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

Codeigniter'da ajax post yönteminde "data" yazmanız gerekmiyor. burada bir örnektir.

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

    }); 

Not: url, yazılım denetleyicisi adıdır arama fonksiyonu adıdır ve searchThis i gönderiyorum değişkendir.

Denetleyici burada.

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

Umarım işiniz için fikir edinebilirsiniz.