181 votes

Comment désérialiser en PHP un formulaire sérialisé par jQuery ?

Utilisation de $('#form').serialize() j'ai pu envoyer ceci vers une page PHP. Maintenant, comment puis-je le désérialiser en PHP ? Il a été sérialisé dans jQuery.

2 votes

Pour ce genre de questions, je vous recommande d'utiliser Firebug pour voir quelles données, dans quel format, sont envoyées au serveur. Vous pouvez alors facilement poster un exemple de vos données.

439voto

chrisallenlane Points 2030

À condition que votre serveur reçoive une chaîne de caractères ressemblant à ceci (ce qui devrait être le cas si vous utilisez jQuery). serialize() ) :

"param1=someVal&param2=someOtherVal"

...quelque chose comme ça est probablement tout ce dont vous avez besoin :

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

$params devrait alors être un tableau modélisé comme vous vous y attendez. Notez que cela fonctionne également avec les tableaux HTML.

Pour plus d'informations, voir ce qui suit : http://www.php.net/manual/en/function.parse-str.php

7 votes

C'est la meilleure façon de procéder. parse_str($_REQUEST['jquery_serialized_values'], $output) ; print_r($output) ;

3 votes

Cette méthode est bien meilleure que l'autre.

3 votes

En tant qu'utilisateur ayant donné la réponse acceptée, je suis d'accord pour dire que CECI est la bonne réponse. J'ai donné ma réponse en partant du principe que la requête était envoyée via les méthodes jQuery ajax $.get/post (je ne sais pas trop d'où je tiens ça), qui envoie la sortie de la fonction serialize() sous forme de variables GET standard, de sorte qu'aucune analyse syntaxique des chaînes n'est nécessaire. par exemple : $.get('ajax.php', $('form').serialize(), function() {}) ;

66voto

Chris Gutierrez Points 3127

Vous ne devriez pas avoir à désérialiser quoi que ce soit en PHP à partir de jquery serialize méthode. Si vous sérialisez les données, elles doivent être envoyées à PHP en tant que paramètres de requête si vous utilisez une requête ajax de type GET ou en tant que variables de post si vous utilisez une requête ajax de type POST. Ainsi, en PHP, vous accédez à des valeurs telles que $_POST["varname"] ou $_GET["varname"] en fonction du type de demande.

Le site serialize prend simplement les éléments du formulaire et les met sous forme de chaîne. "varname=val&var2=val2"

9 votes

C'est incorrect. Vous avez en effet besoin d'analyser la chaîne de caractères que serialize retours. Voir la réponse la plus populaire ci-dessous.

56voto

Aridane Points 161

// jQuery Post

var arraydata = $('.selector').serialize();

// jquery.post serialized var - TO - format de tableau PHP

parse_str($_POST[arraydata], $searcharray);
print_r($searcharray); // Only for print array

// Vous obtenez n'importe quel même de cela

 Array (
 [A] => 1
 [B] => 2
 [C] => 3
 [D] => 4
 [E] => 5
 [F] => 6
 [G] => 7
 [H] => 8
 )

0 votes

C'est exactement ce que je cherchais !

18voto

danip Points 4952
parse_str($_POST['whatever'], $searcharray);

5voto

Murtaza Hussain Points 663

Pourquoi ne pas utiliser un tableau associatif, pour pouvoir l'utiliser facilement.

function unserializeForm($str) {
    $returndata = array();
    $strArray = explode("&", $str);
    $i = 0;
    foreach ($strArray as $item) {
        $array = explode("=", $item);
        $returndata[$array[0]] = $array[1];
    }

    return $returndata;
}

Salutations

4 votes

Je ne comprends pas votre $i = 0;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X