2010-10-31 9 views
3

Hey!
Je possède ce code pour la forme:
Publier un formulaire avec jQuery et l'ajouter à la page


<form class="myform" name="myform" method="POST" action="post.php"> 
<textarea id="mytextarea" name="mytextarea"></textarea> 
<button>Share</button> 
</form> 

J'ai aussi ce code de la page:

 
<div class="content"> 
<div class="message">That message</div> 
<div class="info">Published 10/10/10 </div> 
</div> 
<div class="content"> 
<div class="message">That other message</div> 
<div class="info">Published 10/9/10 </div> 
</div> 

Il est possible d'envoyer le formulaire avec jQuery, au lieu d'avoir à recharger la page entière? Puis-je récupérer la réponse du formulaire et mettre la réponse dans le haut de la première <div class="content">?
Note: J'ai plusieurs formulaires avec la même classe.
Merci beaucoup!

Répondre

0

Pour soumettre un formulaire en utilisant jQuery je crois que vous devez vérifier cela: http://api.jquery.com/submit/

Et je suis sûr que vous pouvez récupérer les données fournies avec les éléments suivants:

$('[name=mytextarea]').val()` 
+0

.val() a des problèmes avec certains navigateurs plus anciens. Il est préférable d'utiliser .attr ('value') pour la compatibilité. – Scott

1

Oui, l'envoi de formulaires avec jQuery est assez facile.

Il y a une fonction simple pour publier des données avec AJAX, et il est facile de lier les valeurs d'une forme:

$.post(url, $('#myform').serialize(), function(data) { 
    $('#content').prepend(data); 
}) 

$.post est la façon simple. Si vous avez besoin de vérifier les erreurs et autres, vous devriez vérifier $ .ajax (http://api.jquery.com/jQuery.ajax).

0

Oui, cela est certainement possible, en utilisant AJAX:

$('.myform').submit(function(e){ 
    var data = $(this).serialize(); 
    e.preventDefault(); 

    $.ajax({ 
     url: this.action, 
     type: 'POST', 
     success: function(data) { 
      $('#content').prepend(data); 
     }, 
     error: function() { 
      alert('oops, something went wrong'); 
     } 
    ); 
}); 
+0

Si j'ai plusieurs formulaires avec la même classe, comment puis-je utiliser uniquement celui que l'utilisateur a cliqué sur "Envoyer"? – Francesc

+0

Je viens de remarquer que votre question donnait au formulaire un 'class' de' myform', plutôt qu'un 'id'. J'ai mis à jour la réponse en conséquence. Cette action se produira uniquement sur le formulaire que l'utilisateur soumet. La fonction 'submit' signifie" quand l'une de ces formes est soumise, faites-le à la place ". – lonesomeday

+0

Lorsque je clique sur le bouton "Envoyer", le navigateur charge l'URL 'action' au lieu d'envoyer la même page. Savez-vous ce qui se passe? – Francesc