2013-07-11 6 views
12

POST 메서드를 사용하여 많은 자습서를 검색하고 여기에도 답변을 얻었지만 POST가 여전히 작동하지 않습니다 ... 만약 내가 여러분이 볼 수있는 것이 있다면 여기에 게시해야한다고 생각했습니다. '티!Codeigniter의 JQuery Ajax POST

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

내보기 - 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> 

마지막 내 컨트롤러 - 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

오류가 발생합니다. 개발자 도구 콘솔을 확인하십시오. – bipen

+0

컨트롤러에 연결 하시겠습니까? 어떤 오류가 발생합니까? –

+0

여기서'url : base_url'을 정의합니까, 이것이 당신 문제라고 생각합니다. – Boris

답변

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

브래킷을 놓치 셨습니다. 자바 스크립트가 새로 고침 –

+1

네, 고맙습니다. 제 문제였습니다 ... 몇 시간 동안 찾았습니다! – Dennis

+0

컨트롤러 json 인코딩 된 개체를 반환합니다, 어떻게이 개체를 PHP 스크립트로 얻을 수 있습니까?, 그것은 어떻게 json 개체를 아약스 성공 함수에서 PHP 스크립트로 전달할 수 있습니다. – 151291

2

질문은 이미 답했지만 나는 또한 이렇게 컨트롤러 코드가 될 것 알려 그보다는 난 당신이 CodeIgniter input class을 사용 권하고 네이티브 PHP의 $의 _POST를 사용하는 것이라고 생각

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

codeigniter 입력 클래스를 사용해야하는 이유, 즉 $ _POST보다 그 장점이 무엇인지 설명하면 유용 할 것입니다. – haakym

+0

CI의 입력 클래스를 사용하면 자동화 된 xss_filtering이 포함된다는 이점이 있습니다 (구성에서 비활성화 된 경우 제외) – 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에서 ajax post 메서드에서 "데이터"를 찾을 필요가 없습니다. 여기가 예제입니다.

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

    }); 

참고 : url에서 소프트웨어는 컨트롤러 이름이고 검색은 함수 이름이며 searchThis는 보내는 변수입니다.

여기 컨트롤러가 있습니다.

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

나는 당신이 당신의 작품에 대한 아이디어를 얻을 수 있기를 바랍니다.