J'essaie d'envoyer des données d'un formulaire à une base de données. Voici le formulaire que j'utilise:
<form name="foo" action="form.php" method="POST" id="foo">
<label for="bar">A bar</label>
<input id="bar" name="bar" type="text" value="" />
<input type="submit" value="Send" />
</form>
L'approche typique serait de soumettre le formulaire, mais cela entraîne la redirection du navigateur. En utilisant jQuery et Ajax , est-il possible de capturer toutes les données du formulaire et de les soumettre à un script PHP (un exemple, form.php )?
Réponses:
L'utilisation de base
.ajax
ressemblerait à ceci:HTML:
jQuery:
Note: Depuis jQuery 1.8,
.success()
,.error()
et.complete()
sont dépréciée en faveur de.done()
,.fail()
et.always()
.Remarque: N'oubliez pas que l'extrait ci-dessus doit être effectué une fois que DOM est prêt, vous devez donc le placer dans un
$(document).ready()
gestionnaire (ou utiliser le$()
raccourci).Conseil: vous pouvez chaîner les gestionnaires de rappel comme ceci:
$.ajax().done().fail().always();
PHP (c'est-à-dire form.php):
Remarque: Toujours désinfecter les données publiées , pour empêcher les injections et autres codes malveillants.
Vous pouvez également utiliser le raccourci
.post
à la place de.ajax
dans le code JavaScript ci-dessus:Remarque: Le code JavaScript ci-dessus est conçu pour fonctionner avec jQuery 1.8 et versions ultérieures, mais il devrait fonctionner avec les versions précédentes jusqu'à jQuery 1.5.
la source
request
été déclaré comme var local, ce quiif (request) request.abort();
ne fonctionne jamais.serialize()
ils les ignoreront.Pour effectuer une demande Ajax à l'aide de jQuery, vous pouvez le faire à l'aide du code suivant.
HTML:
JavaScript:
Méthode 1
Méthode 2
Le
.success()
,.error()
et.complete()
callbacks sont OBSOLETE jQuery 1.8 . Pour préparer votre code pour leur suppression éventuelle, utiliser.done()
,.fail()
et à la.always()
place.MDN: abort()
. Si la demande a déjà été envoyée, cette méthode annulera la demande.Nous avons donc réussi à envoyer une demande Ajax, et il est maintenant temps de récupérer les données sur le serveur.
PHP
Comme nous faisons une demande POST dans un appel Ajax (
type: "post"
), nous pouvons maintenant grab données à l' aide$_REQUEST
ou$_POST
:Vous pouvez également voir ce que vous obtenez dans la demande POST par l'un ou l'autre simplement. BTW, assurez-vous qu'il
$_POST
est réglé. Sinon, vous obtiendrez une erreur.Et vous insérez une valeur dans la base de données. Assurez-vous de sensibiliser ou d' échapper à toutes les demandes (que vous ayez effectué un GET ou un POST) correctement avant de lancer la requête. Le mieux serait d'utiliser des déclarations préparées .
Et si vous souhaitez renvoyer des données sur la page, vous pouvez le faire en faisant simplement écho à ces données comme ci-dessous.
Et puis vous pouvez l'obtenir comme:
Il existe quelques méthodes abrégées . Vous pouvez utiliser le code ci-dessous. Il fait le même travail.
la source
dataType
), afin que vous puissiez potentiellement accepter JSON ou un autre format?Je voudrais partager une façon détaillée de publier avec PHP + Ajax ainsi que les erreurs renvoyées en cas d'échec.
Tout d'abord, créez deux fichiers, par exemple
form.php
etprocess.php
.Nous allons d'abord créer un
form
qui sera ensuite soumis en utilisant lajQuery
.ajax()
méthode. Le reste sera expliqué dans les commentaires.form.php
Validez le formulaire à l'aide de la validation côté client jQuery et transmettez les données à
process.php
.Nous allons maintenant jeter un œil à
process.php
Les fichiers du projet peuvent être téléchargés depuis http://projects.decodingweb.com/simple_ajax_form.zip .
la source
Vous pouvez utiliser sérialiser. Voici un exemple.
la source
$.parseJSON()
est une bouée de sauvetage totale, merci. J'avais du mal à interpréter ma sortie sur la base des autres réponses.HTML :
JavaScript :
la source
J'utilise la manière indiquée ci-dessous. Il soumet tout comme des fichiers.
la source
Si vous souhaitez envoyer des données à l'aide de jQuery Ajax, il n'est pas nécessaire d'utiliser une balise de formulaire et un bouton de soumission
Exemple:
la source
la source
La gestion des erreurs Ajax et du chargeur avant de soumettre et après avoir soumis avec succès affiche une boîte de démarrage d'alerte avec un exemple:
la source
J'utilise ce code simple d'une ligne depuis des années sans problème (il nécessite jQuery):
Ici ap () signifie une page Ajax et af () signifie une forme Ajax. Dans un formulaire, un simple appel à la fonction af () affichera le formulaire dans l'URL et chargera la réponse sur l'élément HTML souhaité.
la source
Dans votre fichier php entrez:
et dans votre fichier js envoyer un ajax avec l'objet de données
ou conservez-le tel quel avec le formulaire de soumission. Vous n'en avez besoin que si vous souhaitez envoyer une demande modifiée avec un contenu supplémentaire calculé et pas seulement des données de formulaire, qui sont entrées par le client. Par exemple, un hachage, un horodatage, un ID utilisateur, un ID session et similaires.
la source
S'il te plaît, vérifie cela. Il s'agit du code de demande Ajax complet.
la source
Ceci est un très bon article qui contient tout ce que vous devez savoir sur la soumission de formulaires jQuery.
Résumé de l'article:
Soumission d'un formulaire HTML simple
HTML:
JavaScript:
Multipart HTML / Form-Data Form Submit
Pour télécharger des fichiers sur le serveur, nous pouvons utiliser l'interface FormData disponible pour XMLHttpRequest2, qui construit un objet FormData et peut être envoyée au serveur facilement en utilisant jQuery Ajax.
HTML:
JavaScript:
J'espère que ça aide.
la source
Depuis l'introduction de l' API Fetch, il n'y a vraiment plus de raison de le faire avec jQuery Ajax ou XMLHttpRequests. Pour POSTER des données de formulaire dans un script PHP en JavaScript vanilla, vous pouvez procéder comme suit:
Voici un exemple très basique d'un script PHP qui prend les données et envoie un e-mail:
la source