2012-06-22 3 views
1

$.ajax을 사용하여 양식 값을 PHP 스크립트로 보냅니다.PHP에서 다차원 배열로 자바 스크립트에서 데이터를 보내는 방법

양식 입력 필드는 PHP에서 배열처럼 읽었지만 javascript 및 jQuery와 동일한 작업을 수행하는 방법을 모르며 PHP에서 배열과 같이 읽을 수있는 방식으로 전송합니다.

예를 들어 PHP에서 foo[bar]라는 입력하면 현재 내가

data:{ 
    foo_bar: $('form').find('#foo_bar').val(), 
    foo_xxx: $('form').find('#foo_xx').val() 
}, 

같은이 데이터를 전송하고있어 수동으로 PHP 스크립트에서 배열을 조립 $_POST['foo']['bar']

으로 그것을 얻을.

그러나 많은 코드 라인을 사용하기 시작했습니다. 필자는 어떻게해서 이것을 자동화하고 PHP로 다차원 배열로 모든 양식 입력을 보낼 수 있습니까?

+0

나는 당신이하려는 것을 시각화 할 수 있는지 확신하지 못합니다. 더 많은 코드를 주시겠습니까? – Blazemonger

+0

양식 필드는 일반적으로 키 -> 값 쌍 형태입니다 ... 그래서 다차원이란 무엇입니까? 어떤면에서 다차원이 될 것입니까? –

답변

5

$ .serialize();를 사용할 수 있습니다. 여기에 대한 자세한 내용은

data: { 
    d: $('form').serialize() 
} 

확인 : http://api.jquery.com/serialize/

그것은 문자열 field=value&field2=value&을 다시 보낼 것이다 당신이 처리 할 수 ​​parse_str를 사용할 수 있습니다 그것은

parse_str 샘플 :

$foo = "t[]=1&t[]=2&b=3"; 
parse_str($foo, $bar); 
var_dump($bar); 

결과로 :

array(2) { 
    ["t"]=> 
    array(2) { 
    [0]=> 
    string(1) "1" 
    [1]=> 
    string(1) "2" 
    } 
    ["b"]=> 
    string(1) "3" 
} 
+0

난 그냥 serialize 찾고 있었는데, 그것은 단지 한 수준을 지원 나타납니다 .. – Alex

+0

한 수준에서 무엇을 의미합니까? – mobius

+0

글쎄, 문자열이 하나 이상의 레벨을 지원하지 않는 것처럼 보이지만, implode/explode를보고있었습니다. parse_str을 multidim으로 디코딩 할 수 있습니까? 정렬? – Alex

4

특별한 일을 할 필요가 없습니다. 정확하게 당신이 원하는 방법을 당신의 필드 이름을 선언 PHP 그들을 해석하는 :

<form> 
<input name="foo[bar]" id="foo_bar"> 
<input name="foo[xxx]" id="foo_xxx"> 
<input name="a[]" id="a_0"> 
<input name="a[]" id="a_1"> 
<input name="b[0][1][2]" id="b_0_1_2"> 
</form> 

jQuery.serialize이를 URL 인코딩 할 양식 필드 다만 방법 당신이 예상 :

data: $("form").serialize() 
// foo%5Bbar%5D=&foo%5Bxxx%5D=&a%5B%5D=&a%5B%5D=&b%5B0%5D%5B1%5D%5B2%5D= 

을이이 쿼리 문자열로 전달하는 경우 PHP는 페이지 :

/phpinfo.php?foo%5Bbar%5D=&foo%5Bxxx%5D=&a%5B%5D=&a%5B%5D=&b%5B0%5D%5B1%5D%5B2%5D= 

당신이 얻을 :

$_GET["foo"] = Array 
(
    [bar] => 
    [xxx] => 
) 
$_GET["a"] = Array 
(
    [0] => 
    [1] => 
) 
$_GET["b"] = Array 
(
    [0] => Array 
     (
      [1] => Array 
       (
        [2] => 
       ) 
     ) 
) 
관련 문제