2009-05-11 6 views
1

J'ai une page jsp qui devrait charger une popup en utilisant ajax. Le contenu de la page est déterminé par le formulaire rempli par l'utilisateur.Chargement d'une popup en utilisant ajax

Quelque chose comme ceci:

javascript:

ajax('getPage.action', 'content_id', 'form_id'); 

foo.jsp:

<div id="content_id"></div> 

<form id="form_id"> 
... 
</form> 

java/printemps:

@RequestMapping("getPage.action") 
MyController extends AbstractCommandController { 
    RealDto dto = (RealDto)command; 
    ... 
    return new ModelAndView("foo", data); 
} 

La partie la plus difficile pour moi est comment envoyer les données de formulaire e Asily comme un appel ajax. Puis-je utiliser jQuery ici? Le formulaire change de façon dynamique, il serait donc très gênant de lister tous les champs du formulaire.

Serait-il utile d'utiliser Springs XT (que je n'ai jamais)?

Répondre

2

Oui, vous pouvez utiliser serialize pour convertir trivialement le formulaire pour envoyer les données.

$("#form1").submit(function() { 
    $.get("/desiredURL", $("#form1").serialize(), function(response) { 
     // send response data to a popup 
    } 
} 

Vous pouvez utiliser get ou post pour envoyer les données.

Pour le popup j'aime facebox, mais il y a beaucoup de choix.

0

Je ne sais pas jQuery, mais pour le prototype c'est facile:

new Ajax.Request('getPage.action', { 
    parameters: $('form_id').serialize(true), 
    onSuccess: someMethod 
); 

Vérifiez la Prototype API docs.

Cette page a les mêmes informations pour jQuery: http://docs.jquery.com/Ajax

2

jQuery form plug-in peut vous aider à transformer facilement une forme régulière à un Ajax un. Vous avez seulement besoin d'une seule ligne de code:

$("#myform").ajaxForm(
    {beforeSubmit: validate, success: showPopup}); 
+0

Le plug-in n'est pas nécessaire depuis JQuery 1.2 http://docs.jquery.com/Ajax/serialize – Pool

+0

Oui, mais avec le plug-in de formulaire (en particulier avec plug-in de validation), vous convertissez un formulaire standard en un AJAX avec une seule ligne de code. – kgiannakakis

Questions connexes