Comment envoyer des données de formulaire de sérialisation à l'aide de JQuery si l'élément d'entrée est un tableau
J'ai ce bout de code dans mon code PHP:
while ($row = mysqli_fetch_assoc($result))
{
extract($row);
echo "<tr>";
echo "<td bgcolor='#FFFFFF'><input id='bookArray[]' name='bookArray[]' type='checkbox' value='$book_id' />$book_id</td>";
echo "<td bgcolor='#FFFFFF'>$threat_name</td>";
echo "</tr>";
}
Dans la page HTML, je veux utiliser jQuery serialize() méthode pour envoyer éventail de livres sélectionnés dans bookArray[]. Dans mon JavaScript,
var selectedbooks = $("book_form").serialize();
alert (selectedbooks);
Dans la boîte de message d'alerte, je n'ai pas d'obtenir n'importe quelle valeur (chaîne vide).
Déjà quand je suis à l'aide de Prototype, il a travaillé très bien.
source d'informationauteur
Vous devez vous connecter pour publier un commentaire.
facile:
serialize().replace(/%5B%5D/g, '[]')
Je suis venu avec une méthode qui vous permettra, lorsque les données sont envoyées à l'aide de post
de l'autre côté vous permet d'accéder à vos éléments à l'aide de
$_['post']['name']
Si c'est un tableau (par exemple une sélection multiple) puis sur votre serveur, vous pouvez y accéder comme un tableau de nouveau
$_POST['myselect'][0]...
Code:
La fonction de sérialiser les données de formulaire pour le post
Prototype /Scriptaculous sérialiser les fonctionnalités de jQuery:
@Tomalak
Vous pouvez utiliser les crochets caractères "[" et "]" au sein de XHTML
voir
http://www.w3.org/TR/xhtml1/dtds.html#dtdentry_xhtml1-transitional.dtd_input
Cela signifie donc qu'un nom peut contenir beaucoup de personnages différents légalement à l'intérieur de XHTML, bien qu'il ne fait pas beaucoup de sens d'utiliser des barres obliques ou des crochets.
PHP supporte l'utilisation de la notation de tableau dans le formulaire de noms, de sorte que vous pourriez être manquant un truc si vous n'utilisez pas la notation de tableau dans certains cas.
jQuery 1.4
fonctionner correctement
jquery =>
php =>
de sortie =>
et Vous pouvez faire tout ce que vous voulez avec un tableau de données,
grâce à Aridane https://stackoverflow.com/questions/1792603
Vous devrez peut-être changer votre PHP @Tomalak suggère, mais vous aurez aussi besoin de changer votre code javascript. Pour faire référence à un élément nommé utiliser le #nom sélecteur:
Problème résolu! Voici ce que j'ai fait.
À l'intérieur de fichier PHP pour créer des lignes de la dynamique des cases à cocher,
Je n'utilise pas JQuery $.méthode post plus. J'ai changé mon code à la suite de
Maintenant, à l'intérieur saveBookList.php page, la valeur de $_POST['bookArray'] est un Tableau. Yey! Yey!
Je ne souhaite $.méthode post de JQuery en charge array type de données en tant que Prototype. 🙂
ce n'est pas un problème avec jQuery Post, c'est avec sérialiser vous pouvez faire ceci:
mais tout ce que vous avez à faire est de remplacer " ["&"] " retour à eux-mêmes après la sérialisation. parce que la fonction serialize(); modifié à leur htmlencoded valeur!
Si vous avez à poster ce tableau uniquement et pas les autres champs de saisie, c'est propre et rapide solution:
Explication:
Le sélecteur ^= sélectionne tous les éléments avec une valeur d'attribut de nom commençant par 'bookArray", l'ouverture entre crochets '[' permet de s'assurer que l'élément est le tableau que nous voulons pour sérialiser et pas seulement une variable commençant par la chaîne 'bookArray'.
Vous devez remplacer gauche crochets de droite et de crochets:
Grâce Tomalak.
Dans le fichier PHP, j'utilise le code suivant maintenant:
**Le book_id est unique.
À l'aide de tvanfosson solution, maintenant, je suis en mesure d'obtenir de tableau de la valeur d'entrée
var selectedBooks = $('le formulaire n ° book_form').serialize();
alert (selectedBooks);
À partir de la boîte de message d'alerte, j'obtiens ==> bookArray%5B%5D=T2.05&bookArray%5B%5D=T2.81
Maintenant, lorsque j'ai envoyé le sérialiser valeur d'entrée de fichier PHP à l'aide de JQuery
À l'intérieur saveBookList.php pour traiter les sérialiser forme, j'ai eu cette erreur
"Invalid argument supplied for foreach()".
À l'intérieur saveBookList.php,
Le code PHP ci-dessus fonctionne très bien si je fais des envois à l'aide de Prototype.
Pour Prototype quand je fais
echo $selectedBookId;
J'ai eu la Matrice.
Pour JQuery, quand je fais
echo $selectedBookId;
Je l'ai eu ==>
bookArray%5B%5D=T4.11&bookArray%5B%5D=T4.38
Ma question, n'est prise en charge jQuery tableau de la valeur pour la méthode post?