2012-02-03 6 views
0

나는 PHP 파일에 다음 정보를 보내고있다. 데이터에는 '1'과 '2'가 포함됩니다. 'One'은 직렬화 된 양식을 포함하고 두 개는 유사한 사용자 정의 정보를 포함합니다. 어떻게 그 게시물 값을 PHP로 읽을 수 있습니다. 나는 하나의 값에 포함 된 값과 두 개의 값을 포함하는 것을 구별 할 수 있기를 원합니다. 내가Jquery Ajax가 PHP로 게시물 값을 읽음

$one = $_POST['one']; 
foreach($one as $key=>$value){ $message.= $key.": ".$value."\r\n"; } 

답변

1

일을해야한다고 생각 (X) 하지만 평소와 같이 $ _POST를 사용하여 PHP 스크립트를 수신 할 때 두 변수에 접근 할 수 있으며, 아마도 'parse_str (http://au.php.net/manual/en/function.parse-str.php)'을 사용하여 다양한 매개 변수로 '테스트'를 중단 할 수 있지만 대신이 경로를 사용하는 이유에 대해 질문합니다 매개 변수를 해제하고 데이터 인수에서 개별 인수로 전달하십시오.

data: {'testing' : whatever, 'something' : else} 
+0

2 개의 배열을 가지고있는 목적이 있습니다. 하나의 배열이 양식 값으로 사용되고 다른 배열은 다른 목적으로 사용됩니다. 귀하의 대답은 내 질문을 다루는 것이 아닙니다. – Pinkie

+0

parse_str이 문자열에서 매개 변수를 추출하지 않습니까? – Alpaus

+0

감사합니다 alpaus, parse_str 내가 찾고있는 것입니다. 예상대로 작동했습니다. 데이터가 쿼리 문자열이기 때문에 특수 문자 나 공백이있는 경우 인코딩 할 때 URL을 인코딩해야하는지 궁금합니다. – Pinkie

1

을 할 수있는 방식으로 PHP에서 값을 읽을 수있는 방법

$('form').submit(function() { 
    x = $(this).serialize(), 
    test = 'testing=whatever&something=else'; 
    $.ajax({ 
     type: 'POST', 
     data: {'one':x, 'two':test} 
     ... 
    }) 
}) 

당신은 PHP 측에서 submit

$('form').submit(function(e) { 
    e.preventDefault(); 
    x = $(this).serialize(); 
    test = 'testing=whatever&something=else'; 
    $.ajax({ 
     type: 'POST', 
     data: {one:x, two:test} 
     ... 
    }) 
}) 

의 기본 동작을 취소해야

$one = $_POST['one']; 
$two = $_POST['two']; 

업데이트 :

메신저가 아니라 PHP에 익숙하지하지만 난 다음 내가 양식의 직렬화 된 버전으로 수행 할 작업을 모르겠어요

$one = $_POST['one']; 
$two = $_POST['two']; 

$cols = explode("&", $one); 
foreach($cols as $col) { 
    $key_values = explode("=", $col); 
    $key = urldecode($key_values[0]); 
    $values = urldecode(key_values[1]); 
} 
echo $key, $values; 
+0

감사하지만, 내가 어떻게'foreach ($ key => $ value로 $ one) { \t $ message. = $ key. ":". $ value. "와 같은 것을 할 수있는 PHP에서 이름과 값을 얻을 수 있습니다. 엔"; } ' – Pinkie

+0

@Pinkie 대답 업데이트를 참조하십시오. – Rafay

+0

+1은 작동하지만 우아한 해결책은 아닙니다. parse_str은 내가 찾고 있던 것이다. – Pinkie

0

양식은 체크 박스 또는 radioboxes 그들 사이에 먼저 변환해야

0

을 구별하기 $ (이) .serializeArray() 대신 $의 (이) .serialize()를 사용 (같은 이름 입력)이 포함 된 경우 양식 데이터를 JSON으로 가져 오십시오! serialize하는 쿼리 문자열이 아니기 때문에 This을 참조하십시오. JSON은 중첩 된 키를 가질 수있는 기능을 제공합니다.

은 그럼 당신은 같은 JSON에 서로 다른 키를 별도의 데이터를 넣을 수 있습니다 :

var myData = 
{ 
    'one': $('form').serializeObject(), 
    'two': 'testing=whatever&something=else', 
}; 

$('form').submit(function() { 
    $.ajax({ 
     type: 'POST', 
     data: myData, 
     ... 
    }); 
}); 

그리고 PHP 측에서 당신은 쉽게 길을 사용하여 얻을 수있는 당신이에 원하는 :

$one = $_POST['one'] 
foreach($one as $key=>$value) { $message.= $key.": ".$value."\r\n"; } 
+0

어떻게 serializeArray를이 JSON 형식으로 가져올 수 있습니까? '하나'안에 있고 다른 두 값은'two' 내에 있습니다 – Pinkie

+0

jQuery의 serialize 함수를 호출하지 말고 대신에 제공된 링크의 정답에서 함수를 붙여 넣으십시오. 내 대답을 누른 다음 사용 : x = $ (this) .serializeObject(); – BlackDivine

+0

또한 답변을 업데이트했습니다. – BlackDivine