2012-09-03 1 views
1

cakephp 양식을 사용하여 양식을 만듭니다. 그것은이 같은 형태의 무언가를 만드는 : 정상적인 형태의 양식을 제출하고 같은 데이터 뭔가 얻는 때 잘 작동jquery ajax를 사용한 사후 연결 배열

<form name='license' action='/some/action' action='POST'> 

    <input type="text" id="license0Number" name="data[license][0][number]"> 
    <input type="text" id="license0Year" name="data[license][0][year]"> 

    <input type="text" id="license1Number" name="data[license][1][number]"> 
    <input type="text" id="license1Year" name="data[license][1][year]"> 

</form> 

:

$data = array('license' => array('0' => array('number'=>'123', 'year'=>'2000'), 
            '1' => array('number'=>'321', 'year'=>'2003') 
           ); 

을하지만 jQuery를 $.ajax() 기능을 사용하여 동일한 양식을 제출할 때 serialize() 기능으로 데이터를 게시하는 중입니다. 나는 서버 측에서 이와 같은 데이터를 얻고있다.

Array 
(
[data%5Blicense%5D%5B0%5D%5Bnumber%5D] => 123 
[data%5Blicense%5D%5B0%5D%5Byear%5D] => 2000 
[data%5Blicense%5D%5B1%5D%5Bnumber%5D] => 321 
[data%5Blicense%5D%5B1%5D%5Byear%5D] => 2003 
) 

jQuery $ .ajax() 함수를 사용할 때 어떻게 연관 데이터 형식으로 양식 데이터를 가져올 수 있습니까?

편집 :

$('#license_form').live('submit', function(event) { 

    var action = '/some/action'; 
    var data = $(this).serialize(); 

    $.ajax({ 

    type: "POST", 
    url: action, 
    data: data, // form data 
    success: function(result) { alert(result); }, 
    error: function() { alert('error'); } 
    }); 

    event.preventDefault(); 
}); 

감사

+1

ajax 코드를 게시하십시오. – Khaleel

+1

입력 요소에 대해이 이름을 사용하여 jQuery에서 동일한 작업을 수행 할 수 없습니다. 그러나 당신은 이름을 바꿔 적절하게 할 수 있습니다. – Diode

+0

jQuery 파트가 추가되었습니다. –

답변

1

저수준 아약스를 사용할 필요가 없으며 대신 $. 작은 약어를 사용하십시오.

이 시도 :

$(function(){ 

    $("#submit").click(function(){ 
    //Since you're talking about POST 
    $.post('path_to_php_script.php', { 

     "license0Number" : $("#license0Number").val(), 
     "license0Year" : $("#license0Year").val(), 
     "license1Number" : $("#license1Number").val(), 
     "license1Year" : $("#license1Year").val() 


     }, function(respond){ 

      //Respond from PHP 
      //Maybe replace some div with the server respond? 
      $("#some_div").html(respond); //optional 
     }); 

    }); 

}); 

당신은, 그래서 당신은 당신의 PHP 스크립트에서

, 그것을 얻을 것이다 jQuery를 사용하여 POST ASSOC 배열에 대한 질문 :

<?php 

print_r($_POST); //will print what you want 
0

당신은 .serializeArray()를 사용하여 수동으로 값을 인코딩 할 수 있습니다 : 가능한 해결책의

var values = form.serializeArray(); 
for (var i = 0; i < values.length; i++) 
    values[i] = encodeURIComponent(values[i].value); 
values = values.join('&'); 
0

하나는 서버 측에서 키 문자열을 구문 분석하는 것입니다 그리고 PHP에서 관련 배열을 빌드 ...

0

serializeArray() ; 당신이 찾고있는 것

+2

그 대답은 좀 더 자세하게 설명 될 수 있습니다 ... – ThiefMaster