Jak PHP-unserialize formularz jQuery-serialized?
Za pomocą $('#form').serialize()
udało mi się wysłać to na stronę PHP. Jak to odkrecic w PHP? To było serializowane w jQuery.
12 answers
Nie trzeba niczego odserializować w PHP z metody jquery serialize
. Jeśli serializujesz dane, powinny one zostać wysłane do PHP jako parametry zapytania, jeśli używasz metody GET ajax request lub post vars, jeśli używasz żądania POST ajax request. Tak więc w PHP, można uzyskać dostęp do wartości takich jak $_POST["varname"]
lub $_GET["varname"]
w zależności od typu żądania.
Metoda serialize
pobiera tylko elementy formularza i umieszcza je w postaci ciągu znaków. "varname=val&var2=val2"
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-27 09:08:44
Pod warunkiem, że twój serwer otrzymuje ciąg znaków, który wygląda mniej więcej tak (co powinno być, jeśli używasz jQuery serialize()
):
"param1=someVal¶m2=someOtherVal"
...coś takiego chyba wystarczy:
$params = array();
parse_str($_GET, $params);
$params
powinna to być tablica modelowana tak, jak można się spodziewać. Uwaga działa to również z tablicami HTML.
Zobacz poniżej, aby uzyskać więcej informacji: http://www.php.net/manual/en/function.parse-str.php
Mam nadzieję, że to pomoże. Powodzenia!Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-02-23 17:25:26
// jQuery Post
var arraydata = $('.selector').serialize();
/ / jquery.post serialized var-to-PHP Array format
parse_str($_POST[arraydata], $searcharray);
print_r($searcharray); // Only for print array
/ / dostajesz to samo
Array (
[A] => 1
[B] => 2
[C] => 3
[D] => 4
[E] => 5
[F] => 6
[G] => 7
[H] => 8
)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-07-01 14:27:14
parse_str($_POST['whatever'], $searcharray);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-08-18 13:36:57
W HTML Strona:
<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>
On PHP page:
<?php
if(isset($_POST['data']))
{
parse_str($_POST['data'], $searcharray);
$data = array(
"back_message" => $searcharray['f1']
);
echo json_encode($data);
}
?>
W tym kodzie php zwróć pole f1
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-05-17 10:20:36
Dlaczego nie używać tablicy asocjacyjnej, więc można jej łatwo używać
function unserializeForm($str) {
$returndata = array();
$strArray = explode("&", $str);
$i = 0;
foreach ($strArray as $item) {
$array = explode("=", $item);
$returndata[$array[0]] = $array[1];
}
return $returndata;
}
Pozdrawiam
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-02-02 08:16:37
Modified Murtaza Hussain odpowiedź:
function unserializeForm($str) {
$strArray = explode("&", $str);
foreach($strArray as $item) {
$array = explode("=", $item);
$returndata[] = $array;
}
return $returndata;
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:47:29
Po prostu zrób to
$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'] );
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-31 12:50:06
Nie wiem jakiej wersji Jquery używasz, ale działa to u mnie w jquery 1.3:
$.ajax({
type: 'POST',
url: your url,
data: $('#'+form_id).serialize(),
success: function(data) {
$('#debug').html(data);
}
});
Wtedy możesz uzyskać dostęp do kluczy tablic POST, tak jak normalnie w php.
Po prostu spróbuj print_r()
.
Myślę, że owijasz serializowaną wartość formularza we właściwość obiektu, która jest bezużyteczna, o ile wiem.
Mam nadzieję, że to pomoże!Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-10-11 10:23:30
To jest odpowiedź na user1256561. Dzięki za pomysł.. jednak nie zająłem się rzeczami do dekodowania url wspomnianymi w kroku 3.
Oto kod php, który zdekoduje serializowane dane formularza, jeśli ktoś jeszcze tego potrzebuje. Przy okazji, użyj tego kodu według własnego uznania.
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);
}
Wprowadzanie danych url post będzie takie jak: attribute1=wartość1&attribute2=wartość2&attribute3=wartość3 i tak dalej
Wyjście powyższego kodu będzie nadal w tablicy i można go zmodyfikować do get it assigned to any variable you want and it depends on how you want to use this data further.
Array
(
[0] => attribute1
[1] => value1
[2] => attribute2
[3] => value2
[4] => attribute3
[5] => value3
)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-19 21:05:22
Potrzebujesz tylko nazwy atrybutu value w formie. Przykład:
Formularz
<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>
Javascript
$(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;
}
?>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-19 10:25:49
Myślę, że należy oddzielić nazwy formularzy od ich wartości, jedną z metod, aby to zrobić, jest eksplodowanie (&)
, aby uzyskać attribute=value,attribute2=value
.
Chodzi mi o to, że przekonwertujesz serializowany łańcuch jQuery na tablice w PHP.
Oto kroki, które powinieneś wykonać, aby być bardziej szczegółowym.
- przekazana na stronie
jQuery
do stronyPHP
(npajax.php
) gdzie używasz$.ajax
do przesyłania za pomocą post lub get. - z twojej strony php, eksploduj
(&)
tak oddzielenie każdego atrybuty. Teraz otrzymasz attribute1=wartość, attribute2=wartość, teraz otrzymasz zmienną tablicy PHP. e. G$data = array("attribute1=value","attribute2=value")
- zrób
foreach
na$data
iexplode
(=)
, aby można było oddziel atrybut od wartości i upewnij się, żeurldecode
wartość tak, że będzie ona konwertować serializowane wartości na wartość że potrzebujesz, i wstaw atrybut i jego wartość do nowej tablicy zmienna, która przechowuje atrybut i wartość serializowanej sznurek.
Pozwól mi wiedz, czy potrzebujesz więcej wyjaśnień.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-26 13:23:30