2013-04-14 37 views
1
<form action="index.php" method="POST" id="form"> 
<input type="text" name="guest" id="guest_name" class="textbox"/><br /> 
<textarea name="textarea" id="text" class="textarea"></textarea/><br /> 
<input type="submit" id="submit" class="submit"/><br /> 
</form> 

jQuery的PHP反序列化的jQuery表單POST

$.post("events.php?action=send", { data : $("#form").serialize() }, function(data, error) { } 

測試,如果POST數據中有數據:

echo var_dump($_POST['data']); 

我得到這個:

name=blabla&comment=blabla1 

,然後當我做

echo $_POST['guest']; 

沒有出現,這是一個NULL。

問:

我做了什麼錯?爲什麼POST客人不會被填滿?如果它在DATA中,並且表單的方法也是POST。

謝謝!

+0

這是因爲你到'在你的JQuery data'場,你得到它像在PHP序列化的形式。試着擺脫post函數中的'data:'部分,這樣數據就會像預期的那樣進入'$ _POST'數組。 – Jon

回答

8

傳遞序列化的字符串作爲數據參數。員額$不是一個對象,其數據參數是序列化的字符串

$.post("events.php?action=send", $("#form").serialize() , function(data, error) { } 

現在,你就可以訪問$_POST['guest']

+0

哇我不知道這個!非常感謝! –

+0

@Musa你知道嗎。你可以接受答案 – ncm

-1

從你寫的它看起來像$ _POST ['data'] ['guest']會有你要找的東西。

2
<?php 
parse_str($_POST['data'], $data); 
print_r($data); 
0

你做錯了。試着這樣

$.post(
     "events.php?action=send", 
     $("#form").serialize() , 
     function(data, error) {} 
); 

在php結束訪問$ _POST數組這樣

echo $_POST['guest']; 
echo $_POST['textarea']; 

刪除你不需要它的數據關鍵。 $("#form").serialize()將在後期製作查詢字符串,您可以在通過表單提交時輕鬆訪問該字符串。

參考

JQuery .serialize

+0

對象文字必須有鍵/值對。你的代碼第3行不是一個改進。 – Quentin

+0

@Quentin之前downvoting和評論看結果。無論如何,我不會刪除我的答案,因爲我已經這樣使用了幾個月。 –

+0

@Musa發佈的同樣的東西讓我感到慚愧得到了投票,我沒有任何理由得到了投票。 –