2013-07-06 4 views
2

cakephp에 익숙하며 Ajax에서 내 컨트롤러 액션으로 데이터를 보내려고합니다. 입력 상자가있는 팝업 모델이 있습니다 .i 그 값을 가져 와서 보내고 싶습니다. 내 자바 스크립트Cakephp에서 Ajax를 통해 데이터를 전송하는 중

<a class="button anthracite-gradient" onclick="openPrompt()">submit </a> 

.. 여기

내 코드가 새로 고침 페이지없이 컨트롤러에

function openPrompt() 
{ 
var cancelled = true; 

$.modal.prompt('Please enter a value:', function(value) 
{ 

    $.ajax({ 
     type:"POST", 

     url:"/cakephp/controller/action/", 
     success : function(data) { 
      alert(value); //value right now is in this variable ... i want to send this variable value to the controller 

     }, 
     error : function() { 
      alert("false"); 
     } 
    }); 


    }, function() 
    { 

    }); 
    }; 
</script> 

MYCONTROLLER 내가 처음 아약스 요청, 여기에 값을 가져온 다음 컨트롤러에 요청을

+0

이 어디에 당신의 입력 상자가 팝업 상자 @dianuj html로 –

+0

을 추가 할 것입니다 ,, 값입니다 이 변수 "value"에 $ .modal.prompt ('값을 입력하십시오.', function (value) 값은이 변수 값 – hellosheikh

답변

3

그것의 간단한 포스트 값을 Ajax와 당신이 원하는 것을 할 수 있습니다에 대한 응답을 보낼

public function action(){ 
    if($this->request->is('ajax')) { 
     $new = $this->request->data; 

     echo "ok" 
     return; 
    } 
} 

data:{value_to_send:value}의 값을 결합하여 더 accessing-post-data

를 참조하십시오 컨트롤러

function openPrompt() 
{ 
var cancelled = true; 

$.modal.prompt('Please enter a value:', function(value) 
{ 

    $.ajax({ 
     type:"POST", 
     data:{value_to_send:value}, 
     url:"/cakephp/controller/action/", 
     success : function(data) { 
      alert(data);// will alert "ok" 

     }, 
     error : function() { 
      alert("false"); 
     } 
    }); 


    }, function() 
    { 

    }); 
    }; 
</script> 

public function action(){ 
    if($this->request->is('ajax')) { 
    // echo $_POST['value_to_send']; 
    echo $value = $this->request->data('value_to_send'); 

    //or debug($this->request->data); 
     echo "ok" 
     die(); 
    } 
    } 

얻을

+0

에 있습니다. "true"로 경고하는 것처럼 작동한다고 생각합니다.하지만 어떻게 할 수 있습니까? 값을 확인? 내가 변수를 아약스 또는 컨트롤러에서 데이터를 얻을 수 있는지 여부를 볼 수 있습니다 ... 나는이 에코 $ 값을 한 ...하지만 아무것도 인쇄되지 않습니다 – hellosheikh

+0

당신의 "ok"도 출력되지 않습니다 – hellosheikh

+0

그냥 $ _POST [ 'value_to_send']를 울리거나 내 업데이트 된 답변을 확인하십시오 if if ($ this-> request-> is ('ajax'))'아닌가요 ?? –

1

몇 가지 예를 들어 보겠습니다. 필자의 경우, 텍스트 상자에 타이핑 할 때 책 목록을 똑똑한 검색으로 나열하십시오.

$(".selectBook").each(function(){ 
    $(this).keyup(function(event) { 
     var tri = $(this).val(); 
     var oPrnt = $(this).parents('.smartsearch'); 
     var str = ''; 
     if(tri.length > 2){ 
      $.ajax({ 
       type: "POST", 
       url: "/utility/getbooks/", 
       data: JSON.stringify({string: tri, activeonly:false}), 
       contentType: "application/json; charset=utf-8", 
       dataType: "json", 
       success: function (data) { 
        $.each(data, function(key, val) { 
           str += '<li id="a'+key+'" term="'+val+'" data-did="'+key+'">'+val+'</li>'; 
        }); 
        oPrnt.find("ul.result").html(str); 
       }, 
       error: function (errormessage) { 
        oPrnt.find("ul.result").html('<li><b>No Results</b></li>'); 
       } 
      }); 
      oPrnt.find("ul.result").slideDown(100); 
     } 

    }); 
}); 

그리고 컨트롤러

, 액션 (내 경우에는 UtilityController에서 getbooks 조치)

public function getbooks($string = '', $activeonly = true){ 

     $this->autoRender = false; 

     if($this->request->is('ajax')) { 
      $data = $this->request->input('json_decode'); 
      $string = $data->string; 
      $activeonly = $data->activeonly;    
     } 

     $aReturn = array(); 
     // ... fetch books data from DB goes here... 
     $aResult = $this->Book->fetch('list'); 
     foreach($aResult as $r){ 
      if(isset($r['bookname'])){ 
       $aReturn[$r['id']] = $r['bookname']; 
      } 
     }    
     return json_encode($aReturn); 
    } 
관련 문제