soit une fonction : AjaxDoIt(page, cible, typecible) qui m'execute la page
(en php) et me renvoi le résultat dans une cible (un div par exemple).
Elle fonctionne très bien. Voir en bas de message.
Mais lorsque je la lance 2 fois d'affilé, elle n'exécute pas les 2 requêtes
l'une après l'autre, ma fonction ne sait pas faire 2 req en même temps.
sur le chargement de ma page uniquement le div d2 est rempli.
Comment adapter ma fonction pour l'exécution se fasse en parallèle ?!
Merci aux pros de Ajax... (si je me suis bien exprimé! ;-))
Machaon
PJ ma fonction :
/* --------------------------------------------------------
* Charge les donnes HTML renvoyes par le lien "phplink"
* dans le div ou l'input dont l'id est "pagetarget"
* --------------------------------------------------------
*/
var xmlHttp;
var ptarget;
var ttarget;
function AjaxDoIt(phplink, pagetarget, typetarget) {
ptarget = pagetarget;
ttarget = typetarget;
if (phplink.length > 0) {
xmlHttp=GetXmlHttpObject(stateChanged);
xmlHttp.open("GET", phplink, true);
xmlHttp.send(null);
} else {
switch(ttarget)
{
case "innerHTML" :
document.getElementById(pagetarget).innerHTML="";
break;
case "value" :
document.getElementById(pagetarget).value="";
break;
}
}
}
function stateChanged() {
if (document.getElementById(ptarget)==null) { return false; }
switch(ttarget)
{
case "innerHTML" :
if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete") {
document.getElementById(ptarget).innerHTML=xmlHttp.responseText;
}
break;
case "value" :
if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete") {
document.getElementById(ptarget).value=xmlHttp.responseText;
document.getElementById(ptarget).select();
}
break;
}
}
function GetXmlHttpObject(handler) {
var objXmlHttp=null;
if (navigator.userAgent.indexOf("Opera")>=0) {
alert("This example doesn't work in Opera");
return;
}
if (navigator.userAgent.indexOf("MSIE")>=0) {
var strName="Msxml2.XMLHTTP";
if (navigator.appVersion.indexOf("MSIE 5.5")>=0) {
strName="Microsoft.XMLHTTP";
}
try {
objXmlHttp=new ActiveXObject(strName);
objXmlHttp.onreadystatechange=handler;
return objXmlHttp;
} catch(e) {
alert("Error. Scripting for ActiveX might be disabled");
return;
}
}
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Philippe Le Van
soit une fonction : AjaxDoIt(page, cible, typecible) qui m'execute la page (en php) et me renvoi le résultat dans une cible (un div par exemple). Elle fonctionne très bien. Voir en bas de message. Mais lorsque je la lance 2 fois d'affilé, elle n'exécute pas les 2 requêtes l'une après l'autre, ma fonction ne sait pas faire 2 req en même temps.
Bonjour,
Je n'ai pas regardé le code dans le détail mais si tu veux que ta fonction puisse être lancée 2 fois en parallèle, il faut que les variables de ta fonction soient locales et non globales.
Quand tu mets le var ptarget; en dehors de ta fonction et que tu fais directement ptarget ='toto' dans ta fonction, ptarget est globale.
il faut mettre directement var ptarget='toto' à l'intérieur de ta fonction pour que la variable soit locale à ta fonction. Comme ça tes appels ne se marcheront pas sur les pieds.
Cordialement, Philippe Le Van -- tutorial drag and drop rico : http://www.kitpages.fr/ajax_dnd.php
soit une fonction : AjaxDoIt(page, cible, typecible) qui m'execute la
page
(en php) et me renvoi le résultat dans une cible (un div par exemple).
Elle fonctionne très bien. Voir en bas de message.
Mais lorsque je la lance 2 fois d'affilé, elle n'exécute pas les 2
requêtes l'une après l'autre, ma fonction ne sait pas faire 2 req en
même temps.
Bonjour,
Je n'ai pas regardé le code dans le détail mais si tu veux que ta fonction
puisse être lancée 2 fois en parallèle, il faut que les variables de ta fonction
soient locales et non globales.
Quand tu mets le var ptarget; en dehors de ta fonction et que tu fais directement
ptarget ='toto' dans ta fonction, ptarget est globale.
il faut mettre directement var ptarget='toto' à l'intérieur de ta fonction
pour
que la variable soit locale à ta fonction. Comme ça tes appels ne se marcheront
pas sur les pieds.
Cordialement,
Philippe Le Van
--
tutorial drag and drop rico : http://www.kitpages.fr/ajax_dnd.php
soit une fonction : AjaxDoIt(page, cible, typecible) qui m'execute la page (en php) et me renvoi le résultat dans une cible (un div par exemple). Elle fonctionne très bien. Voir en bas de message. Mais lorsque je la lance 2 fois d'affilé, elle n'exécute pas les 2 requêtes l'une après l'autre, ma fonction ne sait pas faire 2 req en même temps.
Bonjour,
Je n'ai pas regardé le code dans le détail mais si tu veux que ta fonction puisse être lancée 2 fois en parallèle, il faut que les variables de ta fonction soient locales et non globales.
Quand tu mets le var ptarget; en dehors de ta fonction et que tu fais directement ptarget ='toto' dans ta fonction, ptarget est globale.
il faut mettre directement var ptarget='toto' à l'intérieur de ta fonction pour que la variable soit locale à ta fonction. Comme ça tes appels ne se marcheront pas sur les pieds.
Cordialement, Philippe Le Van -- tutorial drag and drop rico : http://www.kitpages.fr/ajax_dnd.php
Machaon
"Philippe Le Van" a écrit dans le message de news:
soit une fonction : AjaxDoIt(page, cible, typecible) qui m'execute la page (en php) et me renvoi le résultat dans une cible (un div par exemple). Elle fonctionne très bien. Voir en bas de message. Mais lorsque je la lance 2 fois d'affilé, elle n'exécute pas les 2 requêtes l'une après l'autre, ma fonction ne sait pas faire 2 req en même temps.
Bonjour,
Je n'ai pas regardé le code dans le détail mais si tu veux que ta fonction puisse être lancée 2 fois en parallèle, il faut que les variables de ta fonction soient locales et non globales.
Quand tu mets le var ptarget; en dehors de ta fonction et que tu fais directement ptarget ='toto' dans ta fonction, ptarget est globale.
il faut mettre directement var ptarget='toto' à l'intérieur de ta fonction pour que la variable soit locale à ta fonction. Comme ça tes appels ne se marcheront pas sur les pieds.
Cordialement, Philippe Le Van -- tutorial drag and drop rico : http://www.kitpages.fr/ajax_dnd.php
Je comprends, mais alors comment passer en paramètre à StatChanged les : var xmlHttp; var ptarget; var ttarget;
alors quelle est appelée par : xmlHttp=GetXmlHttpObject(stateChanged);
??
Si je fais ça : xmlHttp=GetXmlHttpObject(stateChanged(xmlHttp, ptarget, ttarget)); ça ne marche plus :((
Merci pour votre aide.
Machaon
"Philippe Le Van" <philippe.levan_nospam@kitpages.com> a écrit dans le
message de news: e255e463eb888c8edac6f6d729a@news.free.fr...
soit une fonction : AjaxDoIt(page, cible, typecible) qui m'execute la
page
(en php) et me renvoi le résultat dans une cible (un div par exemple).
Elle fonctionne très bien. Voir en bas de message.
Mais lorsque je la lance 2 fois d'affilé, elle n'exécute pas les 2
requêtes l'une après l'autre, ma fonction ne sait pas faire 2 req en
même temps.
Bonjour,
Je n'ai pas regardé le code dans le détail mais si tu veux que ta fonction
puisse être lancée 2 fois en parallèle, il faut que les variables de ta
fonction
soient locales et non globales.
Quand tu mets le var ptarget; en dehors de ta fonction et que tu fais
directement
ptarget ='toto' dans ta fonction, ptarget est globale.
il faut mettre directement var ptarget='toto' à l'intérieur de ta fonction
pour
que la variable soit locale à ta fonction. Comme ça tes appels ne se
marcheront
pas sur les pieds.
Cordialement,
Philippe Le Van
--
tutorial drag and drop rico : http://www.kitpages.fr/ajax_dnd.php
Je comprends, mais alors comment passer en paramètre à StatChanged les :
var xmlHttp;
var ptarget;
var ttarget;
alors quelle est appelée par :
xmlHttp=GetXmlHttpObject(stateChanged);
??
Si je fais ça :
xmlHttp=GetXmlHttpObject(stateChanged(xmlHttp, ptarget, ttarget));
ça ne marche plus :((
"Philippe Le Van" a écrit dans le message de news:
soit une fonction : AjaxDoIt(page, cible, typecible) qui m'execute la page (en php) et me renvoi le résultat dans une cible (un div par exemple). Elle fonctionne très bien. Voir en bas de message. Mais lorsque je la lance 2 fois d'affilé, elle n'exécute pas les 2 requêtes l'une après l'autre, ma fonction ne sait pas faire 2 req en même temps.
Bonjour,
Je n'ai pas regardé le code dans le détail mais si tu veux que ta fonction puisse être lancée 2 fois en parallèle, il faut que les variables de ta fonction soient locales et non globales.
Quand tu mets le var ptarget; en dehors de ta fonction et que tu fais directement ptarget ='toto' dans ta fonction, ptarget est globale.
il faut mettre directement var ptarget='toto' à l'intérieur de ta fonction pour que la variable soit locale à ta fonction. Comme ça tes appels ne se marcheront pas sur les pieds.
Cordialement, Philippe Le Van -- tutorial drag and drop rico : http://www.kitpages.fr/ajax_dnd.php
Je comprends, mais alors comment passer en paramètre à StatChanged les : var xmlHttp; var ptarget; var ttarget;
alors quelle est appelée par : xmlHttp=GetXmlHttpObject(stateChanged);
??
Si je fais ça : xmlHttp=GetXmlHttpObject(stateChanged(xmlHttp, ptarget, ttarget)); ça ne marche plus :((