Quick links: Content - sections - sub sections
EN FR
Quick Search Advanced search
 
Page

  [Opened] Re: mise à jour formulaire javascript

Posted by laurentj on 06/27/2007 17:33

un peu plus de rigueur dans la recopie de tes sources serait pas mal, parce qu'entre les fautes de syntaxes qu'il y a ({literal} au lieu d'un {/literal} par exemple ), et tout ces sigles en trop que tu nous rajoutes (% % % par exemple) et qui n'ont pas à être là, on ne sais plus si ça vient effectivement de tes sources originales ou si ça vient juste d'une mauvaise recopie (et donc si les erreurs que tu nous indiques proviennent de ces fautes ou pas)

Si tu as des erreurs dans la console, regarde aussi le source du fichier html produit, pour que tu vois là où ça foire, et corriger alors ton template en conséquence.

Pour l'histoire de ton fichier finduser.js et la variable url, je ne vois absolument pas le rapport. Confond pas ce qui est fait coté serveur (php) et ce qui est fait coté client (le javascript).Confond pas non plus java et javascript, ce sont deux langages qui n'ont strictement rien à voir (il serait donc pertinent de changer ce nom "java" entre autre chose, même si c'est hors sujet pour le problème qui nous occupe).

De plus que contient finduser.php ?? c'est un point d'entrée ? un contrôleur ?

  [Opened] Re: mise à jour formulaire javascript

Reply #1 Posted by christophec on 06/27/2007 17:58

le fichier finduser.php ne m'a servi que pour des tests du javascript finduser.js
ce code est simple:

 <?php
 $nom="coucou";
 $centre="toto";
 echo "$nom,$toto";
 ?>

avec ce finduser.php les champs de mon formulaire nom et centre se sont remplis avec coucou et toto.

si je remplace finduser.php par {urljsstring 'login~user_finduser'};

et que l'action finduser renvoie une réponse (text)cela ne fonctionne que si j'insère le code javascript directement dans le tpl du formulaire de modification. en utilisant :

 $rep->addJSLink('./java/finduser.js');

dans la réponse de l'action qui cré le formulaire celà ne fonctionne pas(detail de l'action moduser dans mon 1er msg.
j'espère bien me faire comprendre ce n'est pas évident !!!
Je vais faire attention aux copier/coller du code pour poster. Je suis obligé de passer d'un rx privé sans connexion vers internet vers un rx qui nous permet de nous connecter à internet d'un coté windows de l'autre linux et une clé usb entre les 2. je me demande si l'éditeur de texte cote internet ne rajoute pas des caractères indésirable. Je vais faire attention a partir de maintenant. bonne soirée a tous

  [Opened] Re: mise à jour formulaire javascript

Reply #2 Posted by bballizlife on 06/27/2007 18:34

Si j'ai donc bien compris :

  • ton code php fonctionne
  • si tu mets ton javascript directement dans ton template, cela fonctionne
  • si tu mets ton javascript dans un fichier (finduser.js) et que tu appel ce fichier, cela ne fonctionne plus.

Si j'ai bien compris, ma conclusion est donc que le chemin vers ton fichier javascript finduser.js n'est pas bon. Il faut donc le corriger.

On va y arriver :)


N'importe comment c'est dans la doc

  [Opened] Re: mise à jour formulaire javascript

Reply #3 Posted by christophec on 06/28/2007 09:43

Bonjour, Nouvelle journée !!

  • Le javascript finduser.js est dans www/java/finduser.js
  • Les autres javascript heure.js,date.js fonctionnent bien.
  • Si j'insère ce code javascript directement dans le tpl ça marche :
 {literal}
 function handleHttpResponse() {
	if (http.readyState == 4) {
		Document = http.responseText.split(",");
		document.getElementById("nom").value = Document[0];
		document.getElementById("centre").value = Document[1];
		//document.getElementById("profil").value = Document[2];
	}
 }
 		
 function findUser() {
	var nomValue = document.getElementById("matricule").value;
	{/literal}
	var url = {urljsstring 'login~user_finduser',array('param'=>'nomValue')};
	{literal}
	http.open("POST", url , true);
	http.onreadystatechange = handleHttpResponse;
	http.send(null);
 }

 function getHTTPObject() {
 var xmlhttp;
 if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
 try {
 xmlhttp = new XMLHttpRequest();
 xmlhttp.overrideMimeType("text/xml");
 } catch (e) {
 xmlhttp = false;
 }
 }
 return xmlhttp;
 }
 var http = getHTTPObject();
 {/literal}

Ce même code je l'insère dans finduser.js celà ne marche plus. La console d'erreur de firefox m'indique :

  • unterminated regular expression {/literal} dans ....www/java/finduser.js

J'ai l'impression que le code est chargé mais que les balises pour jelix ne sont pas interprétées.
Ou bien je m'y prends mal.

  [Opened] Re: mise à jour formulaire javascript

Reply #4 Posted by bballizlife on 06/28/2007 10:16

Forcément...

Les balises {literal} et {/literal} appartiennent à la syntaxe de jTpl. Elles sont donc utilisées dans les templates de jelix uniquement.

Si tu mets ton code javascript dans un fichier à part, ici www/java/finduser.js, tu n'as plus aucun besoin de les utiliser. Je pensais qu'il n'y avait pas besoin d'y préciser et que tu ne les mettais pas dans le fichier externe, mais apparemment j'avais tord ;)

Ça donne quoi alors sans ces balises dans le fichier finduser.js ?


N'importe comment c'est dans la doc

  [Opened] Re: mise à jour formulaire javascript

Reply #5 Posted by christophec on 06/28/2007 10:58

La console d'erreur firefox me donne :
missing:after property id
http://localhost/jelix/racer2/www/java/findUser.js
var url = {urljsstring 'login~user_finduser',array('param'=>'nomValue')};

Je pense que l'appel à l'url n'est pas interprèté par jelix.

  [Opened] Re: mise à jour formulaire javascript

Reply #6 Posted by laurentj on 06/28/2007 11:13

ton finduser.js n'est pas un template, donc tu ne peux donc pas utiliser les tags jtpl dans ton script js. Il faut donc :

  • soit tu reorganises ton code javascript pour qu'il y ait une partie (statique) dans finduser.js, et le reste (dynamique, où tu veux utiliser les tags jtpl) inclus directement dans ton template.
  • soit tu inclus tout dans ton template (donc pas de addJsLink(finduser.js) )

  [Opened] Re: mise à jour formulaire javascript

Reply #7 Posted by bballizlife on 06/28/2007 11:31

Comprends-tu bien ce que tu fais ?

Si tu utilise un fichier javascript externe, il est évident qu'il est indépendant du framework que tu utilise. Donc de Jelix.

ici odifie donc ton var url = {urljsstring 'login~user_finduser',array('param'=>'nomValue')}; pour que l'url soit une véritable url absolue.


N'importe comment c'est dans la doc

  [Opened] Re: mise à jour formulaire javascript

Reply #8 Posted by bballizlife on 06/28/2007 11:31

Ah, /me trop lent ;)


N'importe comment c'est dans la doc

  [Opened] Re: mise à jour formulaire javascript

Reply #9 Posted by christophec on 06/28/2007 11:33

ok pas de problème.
le javascrip va être utilisé avec plusieurs action différentes.

Est-il possible d'écrire le script dans un .tpl(javascriptfinduser.tpl), et ensuite de l'inclure dans le template général avec $rep->addContent ou $rep->body->assign ou d'une autre façon.
cela me permettrai d'écrire le code du script une seule fois et de le réutilisé à volonté(pratique en cas de mofification du script).
encore merci :)

 
Page
  1. mise à jour formulaire javascript