Ajax Simple formulaire à l'aide de javascript, pas de jQuery
Je travaille avec un formulaire pour lequel la marque je ne peux pas changer & ne peut pas utiliser jQuery.
Actuellement, le formulaire de publier les résultats d'une nouvelle fenêtre. Est-il possible de la changer pour un ajax formulaire de sorte que les résultats s'affiche à soumettre à la place, sans altérer le mark-up?
Tirant les résultats (mark-up) à partir de la page de résultats de revenir à la page de formulaire.
Ici, c'est le mark-up pour la forme.
<form class="form-poll" id="poll-1225962377536" action="/cs/Satellite" target="_blank">
<div class="form-item">
<fieldset class="form-radio-group">
<legend><span class="legend-text">What mobile phone is the best?</span></legend>
<div class="form-radio-item">
<input type="radio" class="radio" value="1225962377541" name="option" id="form-item-1225962377541">
<label class="radio" for="form-item-1225962377541">
<span class="label-text">iPhone</span>
</label>
</div><!-- //.form-radio-item -->
<div class="form-radio-item">
<input type="radio" class="radio" value="1225962377542" name="option" id="form-item-1225962377542">
<label class="radio" for="form-item-1225962377542">
<span class="label-text">Android</span>
</label>
</div><!-- //.form-radio-item -->
<div class="form-radio-item">
<input type="radio" class="radio" value="1225962377543" name="option" id="form-item-1225962377543">
<label class="radio" for="form-item-1225962377543">
<span class="label-text">Symbian</span>
</label>
</div><!-- //.form-radio-item -->
<div class="form-radio-item">
<input type="radio" class="radio" value="1225962377544" name="option" id="form-item-1225962377544">
<label class="radio" for="form-item-1225962377544">
<span class="label-text">Other</span>
</label>
</div><!-- //.form-radio-item -->
</fieldset>
</div><!-- //.form-item -->
<div class="form-item form-item-submit">
<button class="button-submit" type="submit"><span>Vote now</span></button>
</div><!-- //.form-item -->
<input type="hidden" name="c" value="News_Poll">
<input type="hidden" class="pollId" name="cid" value="1225962377536">
<input type="hidden" name="pagename" value="Foundation/News_Poll/saveResult">
<input type="hidden" name="site" value="themouth">
Des conseils/tutoriel est très apprécié. 🙂
Vous devez vous connecter pour publier un commentaire.
La suite est beaucoup plus élégant à la solution de l'autre réponse, plus en forme pour les navigateurs modernes.
Mon raisonnement est que si vous avez besoin d'un soutien pour les anciens navigateur vous avez déjà probablement utiliser une librairie comme jQuery, et donc de faire de cette question inutile.
Ci-dessus est pris en charge dans tous les principaux navigateurs, et IE9 et au-dessus.
!el.disabled
?Voici une chouette fonction que j'utilise pour faire exactement ce que vous essayez de faire:
HTML:
JS:
.elements
retourne uniquement les nœuds d'entrée pourFORM
?this
dans le onClick et lamyself
dans la fonction? Désolé, je ne suis pas fort avec js.this
semble visé le bouton lui-mêmealert(params);
après la boucle for. Qui vous dira ce que votre params sont.this
est le bouton, maismyself.form
est la forme,myself.form.elements
est tous les éléments de la forme du bouton. elem peut inclure toutes les balises HTML, de sorte que vous pouvez filtrer des intrants.Expansion sur Madara réponse: j'ai dû faire quelques modifications pour le faire fonctionner sur Chrome 47.0.2526.80 (pas testé sur autre chose). Espérons que cela peut sauver quelqu'un certain temps.
Cet extrait est une modification de la réponse, avec les modifications suivantes:
!el.disabled
,!checked
x-www-form-urlencoded
Avec le résultat suivant:
De nos jours à l'aide de
FormData
est la méthode la plus simple. Vous construisez une référence à laForm
élément, et il sérialise tout pour vous.MDN a un exemple de ce ici, en gros:
et si vous voulez un objet JSON ():
La stratégie est de serialise le formulaire et envoyer les données à l'aide XHR, puis faire ce que vous voulez avec la réponse. Il y a une bonne série de services publics et de l'aide à Matt Krus de Ajax Boîte À Outils et liées Outils Javascript.
Si vous êtes juste serialising le formulaire posté, puis le suivant fera l'affaire. Il peut facilement être étendu pour inclure d'autres forment des types de contrôle:
};
J'ai juste pris Coomie la réponse ci-dessus et de le faire fonctionner pour la Radio et des Cases à cocher. Je ne peux pas croire à quel point il est simple et clair que c'est. À quelques exceptions près, je me suis fait à l'aide de cadres.