par
rgz » 20 avr. 2007, 12:22
si tu veux mais je pense que le code est bon car j'utilise l'ajax depuis un bon moment ... Mais on ne sait jamais, en effet.
Code javascript :
Code : Tout sélectionner
function newrequest(){
var xmlhttp=null;
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (E) {
xmlhttp = false;
}
}
if (xmlhttp.overrideMimeType) {
xmlhttp.overrideMimeType('text/xml');
}
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;
}
}
return xmlhttp
}
function get_request(page_call, mondiv){
var req;
if(mondiv=="divalerte"){
clearTimeout(timer);
document.getElementById('divalerte').innerHTML="Loading... please wait... Ok ?!";
document.getElementById('divalerte').style.visibility="visible";
}
req = newrequest();
req.open("GET", page_call+"&"+new Date().getTime(), true);
req.onreadystatechange = function(){
switch(req.readyState){
case 4:document.getElementById(mondiv).innerHTML=req.responseText;
if(req.responseText.length>1) document.getElementById(mondiv).style.visibility="visible";
if(mondiv=="divalerte"){
clearTimeout(timer);
timer=setTimeout('cachealerte()',5000);
}
break;
}
}
req.send("");
}
Code dans ma page principale :
Code : Tout sélectionner
function maj_status(){
get_request('../headers/request/status.php?pass=1','divstatus');
setTimeout("maj_status()",15000);
}
maj_status();
Code HTML de la page principale :
Code : Tout sélectionner
<body class="body">
<div id="img" class="img"><img src="" width="300px"></div>
<div class="divalerte" id="divalerte"></div>
<table class="encadre" width="180px" height="300px" cellspacing="0">
<tr>
<td class="entete">Serveur status</td>
</tr>
<tr>
<td class="donnees">
<div class="divstatus" id="divstatus"></div>
</td>
</tr>
</table>
</body>
Et enfin la page status.php :
Code : Tout sélectionner
session_cache_expire (30);
session_start();
include("../inc/conf.php");
include("../inc/fonctions.inc.php");
connectbase();
$msg='';
$arr='';
$arr=get_serveur_status();
$id=$arr[5];
$time=$arr[2];
$status=$arr[1];
$plpos=$arr[3];
$msg.='Now playing '.format_string($arr[0]).' - '.$time.' ['.$plpos.']';
echo htmlentities($msg);
mysql_close();
Voilà, en esperant que ça va aider. A savoir aussi: je fais plusieurs requêtes ajax sur timer javascript, il est donc possible que 2 requêtes soit envoyées en même temps. Mais ça ne doit pas poser de problème normalement. Et je rappelle que le bug n'arrive que dés fois (genre 1 fois sur 10 requêtes) et que ça ne le fait que sous mozilla (sous linux, windows et mac)
Merci.
si tu veux mais je pense que le code est bon car j'utilise l'ajax depuis un bon moment ... Mais on ne sait jamais, en effet.
Code javascript :
[code]function newrequest(){
var xmlhttp=null;
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (E) {
xmlhttp = false;
}
}
if (xmlhttp.overrideMimeType) {
xmlhttp.overrideMimeType('text/xml');
}
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;
}
}
return xmlhttp
}
function get_request(page_call, mondiv){
var req;
if(mondiv=="divalerte"){
clearTimeout(timer);
document.getElementById('divalerte').innerHTML="Loading... please wait... Ok ?!";
document.getElementById('divalerte').style.visibility="visible";
}
req = newrequest();
req.open("GET", page_call+"&"+new Date().getTime(), true);
req.onreadystatechange = function(){
switch(req.readyState){
case 4:document.getElementById(mondiv).innerHTML=req.responseText;
if(req.responseText.length>1) document.getElementById(mondiv).style.visibility="visible";
if(mondiv=="divalerte"){
clearTimeout(timer);
timer=setTimeout('cachealerte()',5000);
}
break;
}
}
req.send("");
}
[/code]
Code dans ma page principale :
[code]function maj_status(){
get_request('../headers/request/status.php?pass=1','divstatus');
setTimeout("maj_status()",15000);
}
maj_status();[/code]
Code HTML de la page principale :
[code]
<body class="body">
<div id="img" class="img"><img src="" width="300px"></div>
<div class="divalerte" id="divalerte"></div>
<table class="encadre" width="180px" height="300px" cellspacing="0">
<tr>
<td class="entete">Serveur status</td>
</tr>
<tr>
<td class="donnees">
<div class="divstatus" id="divstatus"></div>
</td>
</tr>
</table>
</body>[/code]
Et enfin la page status.php :
[code]
session_cache_expire (30);
session_start();
include("../inc/conf.php");
include("../inc/fonctions.inc.php");
connectbase();
$msg='';
$arr='';
$arr=get_serveur_status();
$id=$arr[5];
$time=$arr[2];
$status=$arr[1];
$plpos=$arr[3];
$msg.='Now playing '.format_string($arr[0]).' - '.$time.' ['.$plpos.']';
echo htmlentities($msg);
mysql_close();
[/code]
Voilà, en esperant que ça va aider. A savoir aussi: je fais plusieurs requêtes ajax sur timer javascript, il est donc possible que 2 requêtes soit envoyées en même temps. Mais ça ne doit pas poser de problème normalement. Et je rappelle que le bug n'arrive que dés fois (genre 1 fois sur 10 requêtes) et que ça ne le fait que sous mozilla (sous linux, windows et mac)
Merci.