2012-09-13 69 views
-1

的數據是這樣的:如何反序列化由ajax發送的數據?

sport[]=1&music[]=0&web[]=2 

我所做的:

$data = unserialize($post["data"]); 

但是這是一個錯誤:

ErrorException [ 8 ]: unserialize() [function.unserialize]: Error at offset 0 of 27 bytes ~ APPPATH\classes\controller\ajax.php [ 14 ] 

回答

5

您應該使用parse_str(),像這樣:

parse_str('sport[]=1&music[]=0&web[]=2', $data); 

現在$data包含該字符串的值:

Array 
(
    [sport] => Array 
     (
      [0] => 1 
     ) 

    [music] => Array 
     (
      [0] => 0 
     ) 

    [web] => Array 
     (
      [0] => 2 
     ) 

) 
+1

這裏的解釋是適當的:unserialize()不起作用,因爲字符串不是PHP序列化格式,但看起來像一個HTTP查詢字符串。用PHP的本地序列化格式序列化數據不是AJAX的方式;通常使用XML或JSON等互操作格式。 – chris

+0

是的,這是一件好事。我被接受了! –

-1

$_POST$_GET陣列已經從你的要求舉行反序列化application/x-www-form-urlencoded數據。

請打印$_POST陣列的var_dump()以瞭解如何訪問此類值。