Envoyer des données de formulaire à l'aide d'ajax
Je veux envoyer toutes les entrées dans un formulaire avec ajax .J'ai un formulaire comme ceci.
<form action="target.php" method="post" >
<input type="text" name="lname" />
<input type="text" name="fname" />
<input type="buttom" name ="send" onclick="return f(this.form ,this.form.fname ,this.form.lname) " >
</form>
Et dans .fichier js nous avons code suivant :
function f (form ,fname ,lname ){
att=form.attr("action") ;
$.post(att ,{fname : fname , lname :lname}).done(function(data){
alert(data);
});
return true;
Mais ce n'est pas de travail.je ne veux pas utiliser les données de Formulaire .
- si vous voulez une solution générale sans coder en dur, vérifier ma réponse hors.
Vous devez vous connecter pour publier un commentaire.
autant que nous voulons envoyer à tous les champs du formulaire qui ont nom d'attribut, vous pouvez faire cela pour toutes les formes, quel que soit le domaine noms:
Première Solution
Deuxième Solution: dans cette solution, vous pouvez créer un tableau de valeurs d'entrée:
$.post
est une chaîne ou un objet( ou un tableau) etform.serialize()
vous donner exactement le type de chaîne que vous avez besoin.... name="item[0][id]"
!.serialize()
, d'autre part - ne fonctionnera pas pour les multi-dimensions des tableaux!Dans votre fonction
form
est un objet DOM, afin d'utiliserattr()
vous devez le convertir en objet jQuery.Avec .serialize()
En outre, Vous pouvez utiliser .serialize()
J'ai écrit moi-même une fonction qui convertit la plupart des choses, on peut vouloir l'envoyer via AJAX pour OBTENIR des POSTES de requête.
Partie suivante de la fonction pourrait être d'intérêt:
Il n'a pas besoin de jQuery car je ne l'utilise pas. Mais je suis sûr que jquery
$.post
accepte chaîne, comme le seconf argument.Ici est l'ensemble de la fonction, les autres parties ne sont pas commenté si. Je ne peux pas promettre il n'existe pas de bugs:
Le code que vous avez posté a deux problèmes:
Première:
<input type="buttom"
devrait être<input type="button"...
. C'est probablement juste une faute de frappe mais sansbutton
votre entrée sera traitée commetype="text"
que la valeur par défaut type de saisie esttext
.Deuxième: Dans votre
function f()
définition, vous êtes à l'aide de laform
paramètre de la pensée, c'est déjà unjQuery
objet à l'aide deform.attr("action")
. Puis de la même façon dans le$.post
appel de la méthode, vous êtes en passantfname
etlname
qui sontHTMLInputElement
s. Je crois que ce que vous voulez est de la forme de l'url de l'action et de l'élément d'entrée des valeurs.Essayer avec les modifications suivantes:
HTML
JavaScript
Voici le violon.
pouvez-vous essayer ceci :
vous pouvez utiliser la méthode serialize de jquery pour obtenir les valeurs d'un formulaire. Essayez comme ceci