2013-07-11 20 views
12

Tôi đã tìm kiếm rất nhiều hướng dẫn với phương thức POST và thấy câu hỏi được trả lời ở đây nhưng POST của tôi vẫn không hoạt động ... Tôi nghĩ tôi nên đăng ở đây nếu các bạn thấy điều gì đó mà tôi không 't!JQuery Ajax POST trong Codeigniter

js My - 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; 
}); 
}); 

Quan điểm của tôi - 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> 

cuối điều khiển của tôi - 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

bạn nhận được bất kỳ lỗi nào không. Vui lòng kiểm tra bảng điều khiển công cụ dành cho nhà phát triển của bạn – bipen

+0

có phải bộ điều khiển không? những gì lỗi nó ném? –

+0

nơi nào bạn xác định 'url: base_url', tôi tin rằng đây là vấn đề của bạn. – Boris

Trả lời

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

Vì bạn đã bỏ lỡ khung. Javascript chỉ làm mới –

+1

Có cảm ơn rất nhiều đó là vấn đề của tôi ... Tôi đã tìm nó trong nhiều giờ! – Dennis

+0

điều khiển trả về đối tượng mã hóa json, làm thế nào tôi có thể nhận được đối tượng này vào kịch bản php ?, nó có nghĩa là làm thế nào tôi có thể vượt qua một đối tượng json từ chức năng thành công ajax vào kịch bản php. – 151291

2

Câu hỏi đặt ra đã được trả lời nhưng tôi nghĩ rằng tôi cũng sẽ cho bạn biết rằng thay vì sử dụng có nguồn gốc PHP $ _POST tôi khuyên bạn sử dụng CodeIgniter input class do đó, mã điều khiển của bạn sẽ

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

Sẽ hữu ích nếu bạn giải thích lý do tại sao người ta nên sử dụng lớp đầu vào codeigniter, tức là lợi thế của nó trên $ _POST là gì? – haakym

+0

Lợi ích của việc sử dụng lớp đầu vào của CI là xss_filtering tự động được bao gồm (trừ khi bị tắt trong cấu hình) – 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

Trong codeigniter không cần phải "dữ liệu" sennd trong phương thức post ajax .. đây là ví dụ.

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

    }); 

Lưu ý: trong url, phần mềm là tên bộ điều khiển, tìm kiếm là tên hàm và tìm kiếmĐây là biến mà tôi gửi.

Đây là bộ điều khiển.

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

Tôi hy vọng bạn có thể có ý tưởng cho công việc của mình.