# Java > Dveloppement Web en Java > Servlets/JSP >  Excuter requte jquery dans une servlet

## sal.gass

Salut pour tous, 
Je suis en train de faire un exemple de requte ajax dans une application web java, en utilisant les servlets : 

j'ai insr la page html aussi le code javaScript dans la servlet :
code du mon servlet: 


```

```

-La variable $cityName c'est pour passer un String en paramtre dans la mthode getWeather(String city), elle n'est pas utilis juste pour un test; 

-La valeur report c'est le data que je veux affich dans le <div></div> aprs le formulaire l'id de mon div est 'weatherReport'. 



```

```

Avec ce code tous va bien et je rcupre la mon valeur du servlet  qui est "valeur de Test", mais le pb c'est que le rsultat s'affiche dans une nouvelle page et non dans le div...c--d il y a rafraichissement de la page et il m'affiche "valeur de Test" tout seule sans le formulaire. 

Dans l'exemple le type de rponse tais text/xml comme a:


```
response.setContentType("text/xml");
```

 mais le browser  m'affiche cette erreur : 


```

```

j'ai chang avec :

```
response.setContentType("text/html");
```

pour viter cette erreur. 

Comment je peux corrig mon code pour que le String s'affiche bien dans le contenue du <div> sans rafraichissement de la page ??  

Je sais pas que cette erreur est lie  un problme Ajax ou Servlet  J2EE. 

Et merci d'avance.

----------


## jowo

Bonjour,

C'est un peu laborieux. Votre page retourne l'information mais elle ne fonctionne pas comme vous le prvoyez.

D'abord, je ne gnrerai pas le code HTML par la servlet. Pour cela, une simple page HTML fera l'affaire et le code sera plus lisible.

Code HTML:


```

```

Le code n'a pas t test et j'ai un doute comment appeler la servlet

La servlet ne s'occupera que de retourner les information mto de la ville saisie. Je te laisse le soin de coder la servlet!!

----------


## OButterlin

> Je sais pas que cette erreur est lie  un problme Ajax ou Servlet  J2EE.


Ben non, change ton type de bouton de "submit"  "button".

Autre point, tu as un chemin physique "c:\...", a ne fonctionnera jamais autre part que sur ton poste. On rfrence toujours un chemin en relatif dans une application web.

Une dernire chose, le code est illisible, la manire de structurer n'est pas bonne, mme si pour dbuter, je comprends l'approche... 

Essaye de dcouper en t'inspirant du modle MVC : 

la vue -> JSP
le controleur -> Servlet
le modle -> un bean (si besoin)

Tu gagneras en lisibilit et en maintenance...

Bonne continuation  :;):

----------


## sal.gass

Merci jowo et OButterlin pour vos rponse, 
J'ai fait comme vous avez dit j'ai spar le code html et javascript du servlet; 
mais l'action ne se passe pas au servlet...le dboggeur ne se pointe pas sur la mthode doPoste comme d'habitude;    
voici mon code : 
index.jsp: 


```

```

la servlet : 


```

```

la mthode doGet est vide. 
Pour les remarques de OButterlin: 
Est ce que c'est ncessaire de  dclarer un bean ?? si oui comment ?? 
Le pb maintenant est comment faire passer la requte au servlelt, comme  dit  jowo.

----------


## jowo

As-tu dfini ta servlet dans le fichier web.xml?

En plus "smantiquement" ton post n'est pas correct. Tu ne "postes (post)" rien vers le server. Tu "prends (get)" de l'information.

Avec un get, il est plus facile de tester le programme:

http://localhost:8080/TestAjax?cityName=Paris

----------


## sal.gass

> As-tu dfini ta servlet dans le fichier web.xml?


oui bien sure: 
mon web.xml :


```

```

----------


## sal.gass

Avec un get il faut appeler le nom de la servlet dans l'url :http://localhost:8080/frameworkAjax/TestAjax, puisque la mthode doGet est vide rien n'est affich dans le browser...donc je ne peut pas tester, 
il faut passer par la page index.jsp puis il faut appeler la mthode doPost (je pense )

----------


## OButterlin

Si tu utilises jQuery.post(), il appelle doPost(...) donc, de ce ct, c'est bon.

Pour la question d'avant, non, le bean n'est pas obligatoire, mais lorsqu'on utilise un formulaire et/ou des donnes dynamiques, c'est prfrable.
La servlet cre ou rcupre un objet du type voulu, positionne les attributs et enregistre dans le request ou en session ce bean pour un traitement par la page.
Dans la page, il suffit de rfrencer l'objet par une balise <jsp:useBean .../> correctement paramtre.

----------


## OButterlin

Ton erreur pourrais venir d'ici


```

```

----------


## sal.gass

Le pb n'est pas dans la syntaxe ou bien une erreur Ajax...mais quand je fait un click sur le bouton pour envoyer une requte au serveur (doPost) le dboggeur ne se pointe pas sur doPost(...) du servlet. 
Je fait l'appel du index.jsp par un simple url :http://localhost:8080/frameworkAjax/
lorsque je fait un appel au non du servlet  partir de son nom l'url :http://localhost:8080/frameworkAjax/TestAjax , c'est bon....il y a excution du doGet. 

Le pb reviens  comment appeler la servlet  partir de index.jsp pour excuter doPost() ??

----------


## OButterlin

Si tu as une erreur javascript, l'appel n'est pas fait.
Si tu utilises Firefox, regarde dans la console d'erreurs (Outils -> Console d'erreurs).
Sinon... euh... installe Firefox  ::mouarf::

----------


## sal.gass

Merci pour votre rponse, 
on faite en utilisant index.jsp je n'ai aucune erreur javaScript  dans la console d'erreur.

----------


## jowo

```

```

Peux-tu expliquer le code en rouge?

Peux-tu nous montrer l'XML reu en retour?

----------


## sal.gass

```
$("report", xml).text()
```

Je ne sais pas exactement...mais le type de retour du requte est text/xml dans le doPost du servlet. 

Excuser moi, comment je peux rcuprer le fichier xml du retour ?? 
Si c'est le DOM de la page ....il est trs long !!

----------


## jowo

> Excuser moi, comment je peux rcuprer le fichier xml du retour ?? 
> Si c'est le DOM de la page ....il est trs long !!


C'est pour cette raison que je t'ai conseill de travailler avec get.

Car il suffit de saisir l'adresse suivante dans un navigateur pour avoir l'XML:

http://localhost:8080/frameworkAjax/...cityName=Paris

----------


## sal.gass

En utilisant get il m'affiche le document xml suivant : 



```

```

C'est bien le rsultat que je veux...maintenant comment inclure ce rsultat dans la page index.jsp c'est  dire dans la div ?? 

dans le doGet(...) j'ai fait appel  doSet(resp, reqs); pour que a marche.    
bizarre le doPot() ne marche pas depuis que j'ai retirer le code html et javaScript du Servlet !!!!

----------


## jowo

Tu ne peux pas l'inclure directement vu que ce n'est pas du HTML. 

Pour le test, tu pourrais modifier la rponse en 


```

```

Pour l'inclure dans ton div avec un rponse HTML


```

```

pour un rponse XML


```

```

A toi d'crire la fonction transformXML2HTML.

Ensuite il suffira de transformer ton XML en HTML sot ct client ou serveur.

----------


## sal.gass

Salut, je m'excuse pour le retard.  

Enfin j'ai arriv  tourn l'exemple prcdent...le pb n'est pas lie au code tout fonctionne convenablement.

Dans fireFox tout code JavaScript ne se lance pas...je ne sais pas pourquoi, quand j'ai essay sur chrome a marche  ::ccool:: 
C'est un truc banal non  ::oops:: 

Aussi on peut inclure un xml dans un div...a marche  condition que la valeur soit dans une balise qui porte son nom (le nom de la variable  affich). 

Je tien  remercier *jowo* et *OButterlin* pour leur aides. 

Merci les gars  :;):

----------


## OButterlin

Dans Firefox (comme dans d'autres navigateurs), l'activation de javascript se paramtre.
Regarde dans Outils -> Options... -> Contenu (et coche la case javascript si ce n'est pas fait)

----------


## jowo

Ou ajoute la balise <noscript>JavaScript n'est pas activ</noscript> dans ton code HTML.

----------

