2014-02-27 48 views
0

我有一個表使用數據表。我有一個非常類似於this link的設置,因爲我在表格中有表單字段並且它們已提交。我不想使用ajax,我想使用提交按鈕。jQuery從數據表序列化到PHP陣列沒有AJAX

這是我的代碼部分:

$('#form').submit(function() { 
    var sData = $('input', oTable.fnGetNodes()).serialize(); 

    console.log(sData); 
    $('#form-values').val(sData); 

}); 

所以我走的是序列化的數據,我把它與編號形式值的隱藏輸入框。一旦我提交,在服務器端,我可以用$_POST['form-values']獲得序列化數據,但是當然...數據是序列化的...我想要一個數組中的數據,以便我可以分析它並將其中的一些插入到數據庫中。

我試着做unserialize($_POST['form-values']),但它給我的錯誤Notice: unserialize(): Error at offset 0 of 1098 bytes in...

我的序列化的數據是這樣的:

comments%5B56%5D=&comments%5B35%5D=&comments%5B12%5D=&comments%5B32%5D= 

但我希望它是:

Array ([comments] => Array ([56] => [35] => [12] => [32] => 

回答

2

您可以開始使用parse_url()

一旦你有,你可以用parse_str()將它們轉換爲變量只是從URL atributes,其工作原理與多維數組呢!

$str = "first=value&arr[]=foo+bar&arr[]=baz"; 

    parse_str($str, $output); 
    echo $output['first']; // value 
    echo $output['arr'][0]; // foo bar 
    echo $output['arr'][1]; // baz 
+0

我真的不想通過URL傳遞值。只會這樣做,如果這是唯一的選擇 – raygo

+0

真的很重要他們來自哪裏?從後param採取它應該是一樣的。 –

+0

是的..我的壞,我重新讀了答案後,我明白了更好 – raygo

2

試試這個:

$params = array(); 
parse_str($_GET, $params); 
+0

警告:parse_str()期望參數1是字符串 – raygo

+1

'$ _GET'應該是'$ _POST ['form-values']'我期望的。 –

0

爲什麼不使用parseJSON jQuery函數?

+0

這將有助於?他沒有任何json解析! –

+0

jQuery選擇器$()返回可以很好地解析的對象。 – Andrew

+0

正確,使用JSON.stringify,而不是parseJSON。 jquery沒有將對象轉換爲json的內置方法。 –