使用$('#form').serialize()
,我可以將它發送到PHP頁面。現在我如何在PHP中反序列化它?它在jQuery中被序列化。如何PHP序列化一個jQuery序列化的表單?
回答
你不應該從jquery serialize
方法反序列化PHP中的任何東西。如果您序列化數據,則應將其作爲查詢參數發送到PHP,如果您使用的是GET方法ajax請求或POST vars(如果您使用的是POST ajax請求)。因此,在PHP中,您可以根據請求類型訪問$_POST["varname"]
或$_GET["varname"]
等值。
serialize
方法只是採用表單元素並將其放入字符串形式。 "varname=val&var2=val2"
謝謝克里斯! –
「was」* wink *;) – JohnnyQ
parse_str($_POST['whatever'], $searcharray);
只要你的服務器接收一個字符串,看起來是這樣的(這是它應該,如果你使用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的版本,但是這對我的作品在jQuery的1.3:
$.ajax({
type: 'POST',
url: your url,
data: $('#'+form_id).serialize(),
success: function(data) {
$('#debug').html(data);
}
});
然後你就可以訪問POST數組鍵,你通常會在PHP做。 只需試一試print_r()
。
我想你是在一個對象的屬性中包裝序列化的表單值,據我所知,這是毫無用處的。
希望這會有所幫助!
我認爲您需要將表單名稱與其值分開,一種方法是爆炸(&)
,以便您獲得attribute=value,attribute2=value
。
我的意思是,你將在PHP中將序列化的jQuery字符串轉換爲數組。
下面是您應該遵循的步驟,以便更具體。
- 傳承序列化
jQuery
到PHP
頁面(例如ajax.php
),您使用$.ajax
使用後提交或獲得 。 - 從你的php頁面中,爆炸
(&)
從而分離每個 屬性。現在你將得到屬性1 =值,屬性2 =值,現在 你將得到一個php數組變量。即摹$data = array("attribute1=value","attribute2=value")
- 請在
$data
一個foreach
和explode
的(=)
這樣就可以 從價值屬性分開,並且一定要urldecode
值,使其系列化值轉換爲需要的值 ,和將該屬性及其值插入到一個新的數組 變量中,該變量存儲該字符串的屬性和序列化值 。
讓我知道你是否需要更多的說明。
這回複用戶1256561。感謝您的想法..但是我沒有照顧在步驟3中提到的url解碼的東西。
所以這裏是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);
}
的網址後數據輸入將是這樣的:ATTRIBUTE1 =值1 & attribute2 =值2 & attribute3 =值3等的上面的代碼
輸出將仍處於陣列,並且可以修改它讓它分配給你想要的任何變量,這取決於你如何進一步使用這些數據。
Array
(
[0] => attribute1
[1] => value1
[2] => attribute2
[3] => value2
[4] => attribute3
[5] => value3
)
// jQuery的帖子
var arraydata = $('.selector').serialize();
// jquery.post系列化變種 - 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
)
這正是我正在尋找的! –
爲什麼不使用關聯數組,所以你可以使用它asily
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;' – Thielicious
在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
場。
修改Murtaza Hussain答案:
function unserializeForm($str) {
$strArray = explode("&", $str);
foreach($strArray as $item) {
$array = explode("=", $item);
$returndata[] = $array;
}
return $returndata;
}
你只需要值的形式屬性名稱。例如:
形式
<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;
}
?>
只要做到這一點
$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']);
- 1. PHP反序列化的jQuery表單POST
- 2. 序列化表單jquery
- 3. 如何在php中反序列化jQuery序列化值
- 4. 在JQuery中序列化和反序列化表單元素
- 5. PHP反序列化錯誤反序列化時,jQuery的序列化形式
- 6. jQuery - 反序列化一個序列化的字符串
- 7. 在Java中反序列化一個序列化的php對象
- 8. Jquery表單插件或JQuery序列化?
- 9. PHP序列化的數據反序列化的jQuery
- 10. JS反序列化一個PHP序列化數組
- 11. 序列化/反序列化DataContracts列表
- 12. 如何序列化/反序列化屬性的通用列表?
- 13. jQuery的序列化表單數據
- 14. jQuery序列化序列化URL錯誤
- 15. jQuery序列化和反序列化
- 16. JQuery序列化和反序列化
- 17. 在jQuery中序列化/反序列化
- 18. PHP序列化/反序列化錯誤
- 19. PHP序列化和反序列化
- 20. PHP反序列化序列化數據
- 21. 序列化/反序列化PHP數組
- 22. jQuery反序列化PHP序列化的數據
- 23. jQuery可排序列表connectWith序列化?
- 24. C++如何序列化/反序列化一個對象?
- 25. jQuery序列化
- 26. PHP序列化
- 27. 如何反序列化R中的php序列化數據?
- 28. javascript的序列化表單
- 29. jquery $ .ajax php side POST序列化表格
- 30. 如何在java中序列化/反序列化對象列表?
對於像這樣的問題,我建議使用Firebug來查看以什麼格式發送到服務器的數據。然後,您可以輕鬆發佈您的數據示例。 – chiborg