Bonjour,
je vous écris car j’ai présentement un gros probleme cela fait 3 jour que je cherche et essaie des truc et
je n’arrive a rien. donc je vous expose le probleme sur mon site web ( en passant je suis amateur en php et
encore plus en ajax lol )… j’ai dans ma section HEADER qui s’actualise toute les secondes pour verifier s’il
y a des nouveaux messages ou des nouvelles demandes d’amis. Donc, j’utilise une fonction javascript pour
le refresh au secondes et une fonction ajax (xmlhttprequest ) le principe c’est que chargement du site. mes fonctions
se charge ( ne s’exécute pas mais se charge je dit bien). donc une fois que le DIV en question à été créer.
j’envoi une demende pour exécuter mon javascript. Comme sa j’ai mon actualisation d’un DIV, dans lequel est
inclu 2 recherche dans une base de donné MYSQL.
LE PROBLEME: seulement sur SAFARI, lorsque je laisse le site ouvert pendans environ 30 minutes jusqu’à 12heures.
hé oui! j’ai laissé le site rouler toute la nuit pour vérifier, j’étais un peu désesperer. Donc, lorsque après tout se temps
je clique sur quelconques liens dans mon site, la page ne change pas, et FREEZE dans le chargement en haut.
(dans la barre d’adresse)
je vous donne les scripts que j’utilise.
(j’ai modifier un peu mon envoie xmphttprequest pour tenter de contré se bug, mais rien n’y fait)
aucun probleme sur: Google Chrome, IE6, IE7, Firefox.
SCRIPT JAVASCRIPT ET AJAX:
<script type='text/javascript'>
function getHTTPObject()
{
var xmlhttp = false;
/* Compilation conditionnelle d'IE */
/*@cc_on
@if (@_jscript_version >= 5)
try
{
xmlhttp = new ActiveXObject('Msxml2.XMLHTTP');
}
catch (e)
{
try
{
xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
}
catch (E)
{
xmlhttp = false;
}
}
@else
xmlhttp = false;
@end @*/
/* on essaie de créer l'objet si ce n'est pas déjà fait */
if (!xmlhttp && typeof XMLHttpRequest != 'undefined')
{
try
{
xmlhttp = new XMLHttpRequest();
if (xmlhttp.overrideMimeType)
{
//xmlhttp.overrideMimeType('text/xml');
xmlhttp.overrideMimeType('text/xml; charset=UTF-8');
}
}
catch (e)
{
xmlhttp = false;
}
}
if (xmlhttp)
{
/* on définit ce qui doit se passer quand la page répondra */
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState == 4) /* 4 : état 'complete' */
{
if (xmlhttp.status == 200) /* 200 : code HTTP pour OK */
{
if(xmlhttp.responseText != '')
document.getElementById('top_new').innerHTML=xmlhttp.responseText;
// alert(xmlhttp.responseText) // This returns null
}
}
}
}
return xmlhttp;
}
function rafraichir() {
var xmlhttp = getHTTPObject();
if(BrowserDetect.browser == 'safari'){
xmlhttp.open('GET','include/cheking_new_mess.php',false);
}else{
xmlhttp.open('GET','include/cheking_new_mess.php',true);
}
xmlhttp.send(null);
setTimeout('rafraichir()', 1000);
}
</script>
LANCEMENT DE MA FONCTION JAVASCRIPT RAFRAICHIR:
<script language='javascript'>
rafraichir();
</script>
PAGE PHP QUI EST RECHARGER:
<?php
session_start();
include('connect.php');
$mypseudo = $_SESSION['login'];
$message_count = mysql_query("SELECT mess_in.read FROM mess_in WHERE mess_in.to='".$mypseudo."' AND mess_in.read='0'") or die(mysql_error());
$mess_count = 0;
while ($donnees_message = mysql_fetch_array($message_count)) // On boucle pour afficher toutes les donn?es
{
$mess_count++;
}
/*
if($_GET['updatels_m'] == 1){
if($mess_count != 0){
$mess_count=($mess_count-1);
}
}
*/
if($mess_count == 0 OR $mess_count < 0 OR $mess_count == ''){
$mess_count1="<font color='white'>Aucun nouveau message</font>";
}else{
if($mess_count == 1){
$mess_count1="<font color='red'><u>$mess_count nouveau message</u></font>";
}elseif($mess_count > 1){
$mess_count1="<font color='red'><u>$mess_count nouveaux messages</u></font>";
}
}
$friends_demand_count = mysql_query("SELECT friends.ami_confirm FROM friends WHERE ami_2='".$mypseudo."' AND ami_confirm='0'");
$turn_friendsdemand_count = 0;
while ($donnees_friendsdemand_count = mysql_fetch_array($friends_demand_count)) // On boucle pour afficher toutes les données
{
$turn_friendsdemand_count++;
}
/*
if($_GET['updatels'] == 1){
if($turn_friendsdemand_count != 0){
$turn_friendsdemand_count=($turn_friendsdemand_count-1);
}
}
*/
if($turn_friendsdemand_count == "0"){
$turn_friendsdemand_count1="<a href='index.php?go=friends_control' class='nodeco'><font color='white'>Aucune nouvelle demande</font></a>";
}else{
if($turn_friendsdemand_count == "1"){
$turn_friendsdemand_count1="<a href='index.php?go=friends_control' class='nodeco'><font color='red'><u>$turn_friendsdemand_count nouvelle demande</u></font></a>";
}else{
$turn_friendsdemand_count1="<a href='index.php?go=friends_control' class='nodeco'><font color='red'><u>$turn_friendsdemand_count nouvelles demandes</u></font></a>";
}
}
?>
<a class='nodeco' href="http://macellule.com/inc_out/messagerie.php?folder=recus" onclick="return GB_showSendPrivateMess('Messagerie Interne...', this.href)">
<?php
echo"$mess_count1</a><br/>$turn_friendsdemand_count1";
?>
Merci grandement pour votre aide.
jonathan.
Configuration: Mac OS X
Safari 525.18
Edité le 26/12/2008 à 18:06