Rafraichir div par ajax [Résolu]

Messages postés
66
Date d'inscription
samedi 21 février 2004
Dernière intervention
6 mars 2015
- - Dernière réponse :  kazma - 23 oct. 2013 à 20:24
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
--
Afficher la suite 

Votre réponse

2 réponses

Messages postés
66
Date d'inscription
samedi 21 février 2004
Dernière intervention
6 mars 2015
0
Merci
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
Commenter la réponse de bubbledesavon
0
Merci
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
Commenter la réponse de kazma

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.