답변:
jquery serialize
메소드 에서 PHP의 직렬화를 해제 할 필요는 없습니다 . 데이터를 직렬화하는 경우 GET 메소드 ajax 요청을 사용하는 경우 데이터를 PHP에 쿼리 매개 변수로 보내거나 POST ajax 요청을 사용하는 경우 var를 게시해야합니다. 따라서 PHP에서는 요청 유형에 따라 $_POST["varname"]
또는 $_GET["varname"]
요청 유형에 따라 값에 액세스합니다 .
이 serialize
메소드는 양식 요소를 가져 와서 문자열 양식으로 넣습니다."varname=val&var2=val2"
serialize
반환 하는 문자열을 구문 분석해야 합니다. 아래에서 가장 인기있는 답변을 참조하십시오.
서버가 다음과 같은 문자열을 수신하고 있다면 (jQuery를 사용하는 경우 serialize()
)
"param1=someVal¶m2=someOtherVal"
... 이것은 아마도 당신이 필요로하는 것입니다 :
$params = array();
parse_str($_GET, $params);
$params
그런 다음 예상대로 모델링 된 배열이어야합니다. 이것은 HTML 배열에서도 작동합니다.
자세한 내용은 다음을 참조하십시오. http://www.php.net/manual/en/function.parse-str.php
도움이 되길 바랍니다. 행운을 빕니다!
// jQuery Post
var arraydata = $('.selector').serialize();
// jquery.post 직렬화 된 var-TO-PHP 배열 형식
parse_str($_POST[arraydata], $searcharray);
print_r($searcharray); // Only for print array
// 당신은 그것과 똑같습니다
Array (
[A] => 1
[B] => 2
[C] => 3
[D] => 4
[E] => 5
[F] => 6
[G] => 7
[H] => 8
)
에서 HTML의 페이지 :
<script>
function insert_tag()
{
$.ajax({
url: "aaa.php",
type: "POST",
data: {
ssd: "yes",
data: $("#form_insert").serialize()
},
dataType: "JSON",
success: function (jsonStr) {
$("#result1").html(jsonStr['back_message']);
}
});
}
</script>
<form id="form_insert">
<input type="text" name="f1" value="a"/>
<input type="text" name="f2" value="b"/>
<input type="text" name="f3" value="c"/>
<input type="text" name="f4" value="d"/>
<div onclick="insert_tag();"><b>OK</b></div>
<div id="result1">...</div>
</form>
에 PHP의 페이지 :
<?php
if(isset($_POST['data']))
{
parse_str($_POST['data'], $searcharray);
$data = array(
"back_message" => $searcharray['f1']
);
echo json_encode($data);
}
?>
이 PHP 코드에서 f1
필드를 반환하십시오 .
연관 배열을 사용하지 않는 이유는 무엇입니까?
function unserializeForm($str) {
$returndata = array();
$strArray = explode("&", $str);
$i = 0;
foreach ($strArray as $item) {
$array = explode("=", $item);
$returndata[$array[0]] = $array[1];
}
return $returndata;
}
문안 인사
$i = 0;
수정 된 Murtaza Hussain 답변 :
function unserializeForm($str) {
$strArray = explode("&", $str);
foreach($strArray as $item) {
$array = explode("=", $item);
$returndata[] = $array;
}
return $returndata;
}
간단히 이렇게
$get = explode('&', $_POST['seri']); // explode with and
foreach ($get as $key => $value) {
$need[substr($value, 0 , strpos($value, '='))] = substr(
$value,
strpos( $value, '=' ) + 1
);
}
// access your query param name=ddd&email=aaaaa&username=wwwww&password=wwww&password=eeee
var_dump($need['name']);
이것은 user1256561에 대한 답장입니다. 귀하의 아이디어에 감사드립니다.
여기 누군가 직렬화 된 양식 데이터를 해독하는 PHP 코드가 있습니다. 그건 그렇고,이 코드를 자신의 재량에 따라 사용하십시오.
function xyz($strfromAjaxPOST)
{
$array = "";
$returndata = "";
$strArray = explode("&", $strfromPOST);
$i = 0;
foreach ($strArray as $str)
{
$array = explode("=", $str);
$returndata[$i] = $array[0];
$i = $i + 1;
$returndata[$i] = $array[1];
$i = $i + 1;
}
print_r($returndata);
}
URL 게시물 데이터 입력은 다음과 같습니다. attribute1 = value1 & attribute2 = value2 & attribute3 = value3 등
위의 코드 출력은 여전히 배열에 있으며 원하는 변수에 할당되도록 수정할 수 있으며이 데이터를 더 사용하려는 방법에 따라 다릅니다.
Array
(
[0] => attribute1
[1] => value1
[2] => attribute2
[3] => value2
[4] => attribute3
[5] => value3
)
양식의 값 속성 이름 만 있으면됩니다. 예 :
형태
<form id="login_form">
<input type="text" name="username" id="a"/>
<input type="password" name="password" id="b"/>
<button type="button" onclick="login()">Submit</button>
</form>
자바 스크립트
$(document).ready(function(){});
function login(){
var obj = $('#login_form').serialize();
$.post('index.php', obj, function(res){
alert(res);
})
}
PHP-index.php
<?php
if(!empty($POST['username']) && !empty($POST['password'])){
$user = $POST['username'];
$pass = $POST['password'];
$res = "Username : ".$user." || Password : ".$pass;
return $res;
}
?>
양식 이름과 값을 분리해야한다고 생각합니다.이를 수행하는 한 가지 방법은 폭발 (&)
하여 얻을 수 attribute=value,attribute2=value
있습니다.
여기서 요점은 직렬화 된 jQuery 문자열을 PHP의 배열로 변환한다는 것입니다.
보다 구체적으로 수행해야 할 단계는 다음과 같습니다.
jQuery
되는 PHP
페이지 (예 : 페이지 ajax.php
)로 직렬화 됩니다 $.ajax
.(&)
각 속성을 분리하여 분해하십시오 . 이제 attribute1 = value, attribute2 = value를 얻습니다. 이제 PHP 배열 변수를 얻게됩니다. 예 :$data =
array("attribute1=value","attribute2=value")
foreach
에 $data
와 그래서 당신은 값과 속성을 분리 할 수있는, 그리고해야
당신이 필요로하는 값으로 직렬화 값을 변환하고, 속성과 새로운 배열 변수에 값을 삽입 할만큼 가치있는 직렬화 된 문자열의 속성 및 값을 저장합니다.explode
(=)
urldecode
더 자세한 설명이 필요하면 알려주십시오.
이 기능을 사용할 수 있습니다 :
function post_unserialize( $key ){
$post_data = array();
$post_data = $_POST[ $key ];
unset($_POST[ $key ]);
parse_str($post_data, $post_data);
$_POST = array_merge($_POST, $post_data);
}
사용 방법
$_POST['serialized_data'] = 'var1=1&var2=2&var3=3';
post_unserialize( 'serialized_data' );