C'est un problème crucial pour moi, je me permet donc de détailler mon problème.
Premièrement, Mon appel Ajax a partir de la page chargée par l'utilisateur :
1 2 3 4 5 6
|
<div id='attachedFiles' style='text-align: left;'>
<script type="text/javascript">
getUpload("<?php echo $id_project;?>", "", "","<?php echo $_SESSION["login"];?>");
</script>
</div> |
La fonction appelée:
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
|
function getUpload(project, cr, type, login){
if (window.XMLHttpRequest) // Mozilla, Safari, ...
var xmlhttp = new XMLHttpRequest();
else if (window.ActiveXObject) // IE
var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
xmlhttp.open("GET", "TestUpload.php?project="+project+"&cr="+cr+"&type="+type+"&login="+login+"&random="+Math.random());
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState == 4)
{
// select the section to display
if(type == ""){
var div = "attachedFiles";
}else if(type == "solution"){
var div = "attachedFilesSolution";
}else if(type == "whereUsed"){
var div = "attachedFilesWhereUsed";
}
document.getElementById(div).innerHTML = xmlhttp.responseText;
}
};
xmlhttp.send(null);
} |
Une fois mon appel Ajax effectué, voilà le second appel Ajax fait sur le onload de la page cible du premier appel:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
function reloadFiles(readOnly, project, cr, type, login){
if (window.XMLHttpRequest) // Mozilla, Safari, ...
var xmlhttp = new XMLHttpRequest();
else if (window.ActiveXObject) // IE
var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
xmlhttp.open("GET", "httpRequest/files.php?readOnly="+readOnly+"&project="+project+"&cr="+cr+"&type="+type+"&random="+Math.random());
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState == 4)
{
document.getElementById("files_<?php echo $type;?>").innerHTML = eval(xmlhttp.responseText);
}
};
xmlhttp.send(null);
} |
La page appelée par ce dernier appel est uniquement constituée de php et de html.
L'utilisateur n'a pas le retour Ajax dans la page qu'il visualise. Cependant si il charge la page cible du premier appel Ajax, la il voi le contenu attendu.
Peut on se faire suivre plusieurs appel Ajax?
Apparemment oui,
En simplifiant les fichiers on peut résumé comme ceci:
Page0.html
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
<html><body>
Ajax first
<script type="text/javascript">
if (window.XMLHttpRequest) // Mozilla, Safari, ...
var xmlhttp = new XMLHttpRequest();
else if (window.ActiveXObject) // IE
var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
xmlhttp.open("GET", "./page1.php?random="+Math.random());
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState == 4)
{
document.getElementById("toto").innerHTML = xmlhttp.responseText;
}
};
xmlhttp.send(null);
</script>
<div id="toto"></div>
</body></html> |
Page1.html
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
<html><body>
Page 1
<script type="text/javascript">
if (window.XMLHttpRequest) // Mozilla, Safari, ...
var xmlhttp = new XMLHttpRequest();
else if (window.ActiveXObject) // IE
var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
xmlhttp.open("GET", "./page2.php?random="+Math.random());
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState == 4)
{
document.getElementById("titi").innerHTML = xmlhttp.responseText;
}
};
xmlhttp.send(null);
</script>
<div id="titi"></div>
</body></html> |
Page2.html
<html><body>Page 2</body></html>
le resultat:
Par contre si je remplace
document.getElementById("toto").innerHTML = xmlhttp.responseText;
par
document.write(xmlhttp.responseText);
J'obtiens mais je peut entrevoir avant que Page 1 Page 2 ne s'affiche.
Je ne comprend pas pourquoi je n'arrive pas avoir ma Page2.html.
Partager