Bonjour à tous,
je ne sais pas si vous avez compris le titre, mais j'ai plusieurs problémes concernant les fonctions javascript appelé par AJAX. Aprés recherches, j'ai lu qu'une fonction JS ne puvait pas être executé si elle est dans un fichier ASP appelé en ASP.
J'ai donc utilisé cette méthode :
Le probléme c'est que cela ne marche pas du tout sous IE (la fonction JS ne n'execute pas) mais sous FF ca marche.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 if(param=="fleche"){ var responseText = "afficheTout('cacheForm');"; }else if(param!="aff"){ var responseText = "rempliToutSeul('deuxieme');"; } if(param=="aff"){ var responseText = "rempliToutSeul('cacheForm');"; } //alert(responseText); xmlhttp.open('POST',url,true); xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4) { if(document.getElementById){ document.getElementById(id).innerHTML = xmlhttp.responseText; if(id=="champsCache"){ var BaliseScript=document.createElement('script'); BaliseScript.type='text/javascript' BaliseScript.appendChild(document.createTextNode(responseText)) document.body.appendChild(BaliseScript) } } } }
Donc je continu ma prog sous FF en attendant de trouver la solution sous IE mais j'ai un autre soucis sous FF.
Je m'explique, je veut mettre a jour un formulaire a partir d'un autre, ca marche pour certains formulaire mais pas pour d'autre.
Voici le code:
=> httprequest (AJAX)
Ca marche mais je le mais quand même
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64 // function hhtprequest function httprequest(id,url,param) { var texte= ''; try{ document.getElementById(id).innerHTML = ""; }catch(e){ alert(e); } //alert(id); //} var xmlhttp=false; try{ xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); }catch(e){ try{ xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); }catch(E){ xmlhttp = false; } } if(!xmlhttp && typeof XMLHttpRequest!='undefined'){ try{ xmlhttp = new XMLHttpRequest(); } catch (e){ xmlhttp = false; } } if(!xmlhttp && window.createRequest){ try{ xmlhttp = window.createRequest(); } catch(E){ xmlhttp = false; } } if(param=="fleche"){ var responseText = "afficheTout('cacheForm');"; }else if(param!="aff"){ var responseText = "rempliToutSeul('deuxieme');"; } if(param=="aff"){ var responseText = "rempliToutSeul('cacheForm');"; } //alert(responseText); xmlhttp.open('POST',url,true); xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4) { if(document.getElementById){ document.getElementById(id).innerHTML = xmlhttp.responseText; if(id=="champsCache"){ var BaliseScript=document.createElement('script'); BaliseScript.type='text/javascript' BaliseScript.appendChild(document.createTextNode(responseText)) document.body.appendChild(BaliseScript) } } } } xmlhttp.setRequestHeader('Content_type','application/x-www-form-urlencoded'); var data = 'texte='+escape(texte); xmlhttp.send(data); }
=> Code de la div qui doit mettre à jour l'autre div, celui-ci aussi marche bien(se met bien a jour), je la met juste pour les id des input, form, etc...
=> ICI je met le code de la fonction javascript permettant de remplir le form (voir plus bas) avec les valeurs du formulaire ci-dessus)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 <form action="#" method="post" id="deuxieme" style="display:none;"> <input type="text" id="company" value="<%=company%>" /> <input type="text" id="address1" value="<%=add1%>" /> <input type="text" id="address2" value="<%=add2%>" /> <input type="text" id="address3" value="<%=add3%>" /> <input type="text" id="address4" value="<%=add4%>" /> <input type="text" id="county" value="<%=county%>" /> <input type="text" id="postcode" value="<%=post%>" /> <input type="text" id="telephone" value="<%=tel%>" /> <select id="contact"> <% if rz2.eof then Response.write "<option value=''> " Response.write " " Response.write " </option>" end if while not rz2.EOF Response.write "<option value='"&rz2.fields("CONTACT")&"'>"&rz2.fields("CONTACT")&"</option>" rz2.movenext wend %> </select> </form>
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 // this function allows to empty a list with another function rempliToutSeul(form){ //alert(form); var un=document.getElementById('autreForm'); var deux=document.getElementById(form); un.ville.value=deux.address4.value; un.compagnie.value=deux.company.value; un.codePostal.value=deux.postcode.value; un.telephone.value=deux.telephone.value; un.nomcontact.length=0; for(i=0;i<un.nomcontact.length;i++){ un.nomcontact.options[i].value=null; } // 2 On la remplie avec les valeurs de la liste des contacts cachée for(i=0;i<deux.contact.length;i++){ un.nomcontact.options[i]= new Option(deux.contact.options[i].text,deux.contact.options[i].value); } un.Pays.value=deux.county.value; un.adresse.value=deux.address1.value+" / "+deux.address2.value+" / "+deux.address3.value; }
Et enfin voici le code du formulaire que je met a jour
Ce code marche correctement sur un formulaire statique (tout le temps présent sur la page), mais pas dans mon cas, en effet, le formulaire est affiché via AJAX. Je rentre bien dans la fonction JS (un alert me le confirme), mais le formulaire ne se met pas à jour, et sous FIrebug, je n'ai aucune erreur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45 <% Response.charset="iso-8859-1" Response.Write request.QueryString("valeur") %> <form method="post" action="#" id="autreform" > <table> <tr> <td>Numero <%=request.querystring("type")%><br /><input type="text" id="numclient" name="numclient" value="" <% if request.querystring("type")="client" then %> onkeyup="javascript:httprequest('champsCache','ASP/rempliDest.asp?type=<%=request.QueryString("type")%>&valeur='+this.value);" <% end if %> /></td> <td colspan="2">Nom du contact <br /> <select id="nomcontact"> <option value=""> </option> </select> </td> </tr> <tr> <td>Compagnie</td> <td colspan="2"><input type="text" id="compagnie" value="" size="45%"/></td> </tr> <tr> <td>Adresse</td> <td colspan="2"> <textarea id="adresse" rows="2" cols="34"></textarea> <!-- <input type="text" id="adresse" value="" size="45%" />--> </td> </tr> <tr> <td>Pays <br /><input type="text" id="Pays" value="" /></td> <td>Ville <br /><input type="text" id="ville" value="" /></td> <td>Code Postal <br /><input type="text" id="codePostal" value="" /></td> </tr> <tr> <td>Telephone</td> <td><input type="text" id="telephone" value="" /></td> </tr> </table> </form>
JE SUIS PERDU, je pige rien![]()
Merci d'avance
Partager