Rafraichir div par ajax [Résolu]

Signaler
Messages postés
66
Date d'inscription
samedi 21 février 2004
Statut
Membre
Dernière intervention
6 mars 2015
-
 kazma -
Bonjour, je n'arrive pas a executer en automatique le script ajax, je vous met le code qui fonctionne avec un bouton , mais pas toutes les 4 secondes.
si vous pouvez m'aider a voir qu'est ce qui ne va pas , merci d'avance


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script language="Javascript"type="text/JavaScript">
var val1t;

// Requette AJAX
function makeRequest(url,id_ecrire){
var http_request = false;
//créer une instance (un objet) de la classe désirée fonctionnant sur plusieurs navigateurs
if (window.XMLHttpRequest) { // Mozilla, Safari,...
http_request = new XMLHttpRequest();
if (http_request.overrideMimeType) {
http_request.overrideMimeType('text/xml');//un appel de fonction supplémentaire pour écraser l'en-tête envoyé par le serveur, juste au cas où il ne s'agit pas de text/xml, pour certaines versions de navigateurs Mozilla
}
} else if (window.ActiveXObject) { // IE
try {
http_request = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
http_request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}
}

if (!http_request) {
alert('Abandon :( Impossible de créer une instance XMLHTTP');
return false;
}
http_request.onreadystatechange = function() { traitementReponse(http_request,id_ecrire); } //affectation fonction appelée qd on recevra la reponse
// lancement de la requete
http_request.open('POST', url, true);
//changer le type MIME de la requête pour envoyer des données avec la méthode POST , !!!! cette ligne doit etre absolument apres http_request.open('POST'....
http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
data="292";
http_request.send(data);
}

function traitementReponse(http_request,id_ecrire) {
var affich="";
if (http_request.readyState == 4) {
if (http_request.status == 200) {
// cas avec reponse de PHP en mode texte:
//chargement des elements reçus dans la liste
var affich_list=http_request.responseText;
obj = document.getElementById(id_ecrire);
obj.innerHTML = affich_list;
var reg=new RegExp("[z]+", "g");
var tableau=affich_list.split(reg);
for (var i=0; i<tableau.length; i++) {
val1t=tableau[2]

}

}
else {
alert('Un problème est survenu avec la requête.');
}

}

}



</script>
<script src="raphael.2.1.0.min.js"></script>
<script src="justgage.1.0.1.min.js"></script>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body >
<input type="button" name="toto" value="279" onclick="makeRequest('rep_PhpAjax.php','id_list2')"/>



<div id="id_list2" align="center">
<!-- ici sera charge la reponse mode texte de PHP à la request AJAX -->
</div>

<div id="bonjour">



<div id="val1t" style="width:200px ; height:160px ; position:relative ; float:left" ></div>

</body>
<script>
window.onload = function(){

val1t=0;

var g = new JustGage({
id: "val1t",
value: Math.round(val1t*100)/100 ,
min: 0,
max: 15,
title: "valeur 1",
label : "carottes",
levelColors: [
"#ff0000",
"#ffff33",
"#33ff33"
]
});
setInterval(function() {
g.refresh(Math.round(val1t*100)/100);

}, 500);

};

</script>
</html>


merci d'avance pour votre
j'ai mis des
settimeout("makeRequest(url,id_ecrire),4000)" 

un peu partout mais rien ne fait
je pense que j'ai loupé quelque chose
--

2 réponses

Messages postés
66
Date d'inscription
samedi 21 février 2004
Statut
Membre
Dernière intervention
6 mars 2015

je suis desolé , je dois etre en manque de cafeine...... voila j'ai changé le settimeout pour setinterval j'ai mis tous ca a la derniere ligne de ma fonction ajax et ca marche, et puis j'avais oublier de remplacer 'url' et l'list2' par les bonnes valeurs
setInterval("makeRequest('rep_PhpAjax.php','id_list2')",2000);

encore desolé pour la gene
j'espere que cela aidera quelque javascriptiste ou ajaxiste a etre attentif
bonjour pour que les paramètres dans le setTimeout soient pris en compte il faut mettre une fonction anonyme

setTimeout(function(){makeRequest(url,id_ecrire)},4000)



on peut aussi les mètres apres le timer mais si je ne me trompe pas sa ne fonctionne avec ie qu'a partir de ie10

setTimeout(makeRequest,4000,url,id_ecrire)


il y aussi une erreur de syntaxe le deuxième t dans setTimeout est en majuscule