[AJAX] Fichier ASP appelé par AJAX
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 :
Code:
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)
}
}
}
} |
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.
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)
Code:
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);
} |
Ca marche mais je le mais quand même
=> 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...
Code:
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> |
=> 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:
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
Code:
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> |
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.
JE SUIS PERDU, je pige rien:bug:
Merci d'avance