2009-06-23 5 views
0

JQuery의 양식 플러그인을 사용하고 있습니다.cakePHP에서 JQuery Form Plugin을 통해 제출 된 데이터 가져 오기

cakephp 컨트롤러에 게시 된 값을 얻으려면 어떻게해야합니까?

내 코드는 다음과 같다 :

<?php echo $form->create('Result',array('action'=>'submit'));?> 
//some input text fields,texarea fields 
<?php echo $form->end('submit');?> 

<script> 
    $(document).ready(function(){ 
    var options = { 
     beforeSubmit: showRequest, // pre-submit callback 
     success:  showResponse, // post-submit callback 
     url: "http://localhost/cake_1.2.1.8004/index.php/results/submit1", 
     type: 'POST', 
     resetForm: true  // reset the form after successful submit 
    }; 
    $('#ResultSubmit1Form').submit(function() { 
     $(this).ajaxSubmit(options); 
     return false; 
    }); 
    });//ready 

    // pre-submit callback 
    function showRequest(formData, jqForm, options) { 
    var queryString = $.param(formData); 
    alert('About to submit: \n\n' + queryString); 
    $.ajax({ 
     type: "POST", 
     url: "http://localhost/cake_1.2.1.8004/index.php/results/submit1", 
     data: "str="+queryString, 
     success: function(msg){ 
     alert("Data Saved: " + msg); 
     } 
    }); 
    return true; 
    } 

    // post-submit callback 
    function showResponse(responseText, statusText) { 
    alert('status: ' + statusText + '\n\nresponseText: \n' + responseText + 
     '\n\nThe output div should have already been updated with the responseText.'); 
    } 

</script> 

그리고 내 CakePHP의 컨트롤러에서

: 그것은 단지 _method=POST 대신 _method=POST&name=x&age=22의를 표시하는 것

<?php 
    class ResultsController extends AppController 
    { 
    var $name = 'Results'; 
    var $helpers=array('Html','Ajax','Javascript','Form'); 
    var $components = array('RequestHandler','Email'); 
    var $uses=array('Form','User','Attribute','Result'); 
    function submit($id = null) { 
     $str=$_POST['str']; 
     echo "POSTED value ".$str; 
    } 
    } 

.

그러나 $_POST['Name']; (여기서 Name은 입력 필드 1의 name 속성입니다.) 입력란 1에 입력 한 x가 표시됩니다.

내가 원하는 것을 어떻게 얻을 수 있습니까?

답변

0

$ this-> params [ 'form']에 액세스하여 컨트롤러에서 값을 다시 가져올 수 있습니다.

'이름'필드의 경우 $ this-> params [ 'form'] [ 'Name']에 표시됩니다.

플러그인이 여전히 POST로 데이터를 보내는 유일한 차이점은 ajaxed입니다. :)

+0

예하지만이 값을 직접 게시해야합니다. $ _POST [ 'fom'] [ 'Name'] 값을 얻지 않고 컨트롤러가 모든 필드가 페이지에 있는지 알지 못합니다. 양식은 각 양식에 다른 필드를 포함 할 수 있습니다 ... – useranon

+0

나는 당신이 말하는 것을 이해하지 못합니다. 모든 게시 된 값은 $ this-> params로 이동하고 적절히 이름이 지정된 입력 필드는 $ this-> data로 이동합니다. 그 플러그인은 실제로 브라우저에서 컨트롤러로 POST 요청을 보내고 폼을 처리하게됩니다. – zam3858

+0

게시 된 데이터에 액세스하는 방법을 알려주십시오. echo $ _POST [ 'str'];로 시도했습니다. 나는 echo http_build_query ($ _ POST [ 'str']);로 시도했다. echo http_build_str ($ _ POST [ 'str']); 하지만 대답은 오지 않을거야. 내 str 값은 name = a & age = 22이다. – useranon

관련 문제