cs_caviar
Messages postés329Date d'inscriptionsamedi 4 janvier 2003StatutMembreDernière intervention29 mars 2015
-
12 nov. 2007 à 11:16
cs_caviar
Messages postés329Date d'inscriptionsamedi 4 janvier 2003StatutMembreDernière intervention29 mars 2015
-
13 nov. 2007 à 12:13
Salut à vous ô forts du JS...
Je suis une fois de plus en train de galérer... enfin cette fois ci je crois que c'est enfin sur un problème digne de ce nom...
je vous explique le principe.
j'ai un tableau html de 4 colones de large par N de haut avec des input texte dans chaque case.
le nombre de ligne de ce tableau est aléatoire et est remplis en fonction d'une BDD via un moteur de template. donc si j'ai trois lignes dans ma bdd je vais afficher ma page avec les input préremplis sur trois lignes.
l'idée est que je verrifie les valeurs entrées dans les input grace à un script ajax. Si je ne les retrouve pas dans ma bdd (une autre table) alors j'affiche la ligne en question sur fond rouge...
bon tout ça marche quand j'envoie le test ligne par ligne... le script ajax fonctionne bien.
mais maintenant je veux créer une fonction qui boucle sur toutes les lignes du tableau pour faire une verrif globale.
j'ai donc créé une boucle for qui appelle ma fonction de verrif ajax en lui passant les bons paramètres
//fonction qui va lancer la verif sur toutes les lignes du tableau
function verrifAllRef() {
// alert (document.getElementById('dTable').childNodes.length);
for ( var b=0; b<document.getElementById('dTable').childNodes.length; b++ )
{
if ( document.getElementById('dTable').childNodes[b].tagName == 'TR') {
// alert( document.getElementById('dTable').childNodes[b].tagName + document.getElementById('dTable').childNodes[b].id );
// selection dynamique de la cellule du tableau parcouru
cellule = document.getElementById('dTable').childNodes[b].getElementsByTagName('td')[0];
// alert (cellule);
//on lance la verif ajax pour cette cellule
verrifRef('ajax_verrif_ref.php', cellule);
}
}
}
La fonction ajax envoie donc en boucle trois requettes HTTP avec des valeurs en post...
mais le problème c'est que quand les trois réponses http arrivent seule la dernière est prise en compte (d'après ce que j'ai pu comprendre sur firebug) et donc une seule ligne change de couleur au lieu des trois ...
j'aimerai donc savoir comment faire pour dire à mon script d'attendre la réponse avant de relancer une requette à HTTP via ma fonction ajax...
euuh ...j'espère que c'est pas trop charabia ce que je vous ai raconté parce que là je coince vraiment ...
merci à vous
@++
cs_caviar
Messages postés329Date d'inscriptionsamedi 4 janvier 2003StatutMembreDernière intervention29 mars 20152 12 nov. 2007 à 12:01
Bon d'après ce que je lis depuis tout à l'heure une solution serait peut être de faire une pause entre chaque appel de la fonction ajax
j'ai testé
//fonction qui va lancer la verif sur toutes les lignes du tableau
function verrifAllRef() {
// alert (document.getElementById('dTable').childNodes.length);
for ( var b=0; b<document.getElementById('dTable').childNodes.length; b++ )
{
if ( document.getElementById('dTable').childNodes[b].tagName == 'TR') {
// alert( document.getElementById('dTable').childNodes[b].tagName + document.getElementById('dTable').childNodes[b].id );
// selection dynamique de la cellule du tableau parcouru
cellule = document.getElementById('dTable').childNodes[b].getElementsByTagName('td')[0];
// alert (cellule);
//on lance la verif ajax pour cette cellule
verrifRef('ajax_verrif_ref.php', cellule);
setTimeout("rien()",1000);
}
}
}
function rien() {
return true;
}
mais apparament la boucle for ne tient pas compte de ça ..elle boucle à donf quand même :(
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 12 nov. 2007 à 12:31
setTimeout ce n'est pas "attendre un certain temps",
c'est lancer la fonction citée après un délai, et continuer
à l'instruction suivante.
<hr /> Cordialement Bul
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_caviar
Messages postés329Date d'inscriptionsamedi 4 janvier 2003StatutMembreDernière intervention29 mars 20152 12 nov. 2007 à 15:43
Yes ! merci pour ces éclairages.
Entre temps j'ai changé de technique et je vais faire mes tests au moment de la génération du template ... c'est plus simple au final...
j'ai lu sur quelques posts que ça parlait d'ajox synchrone et asynchrone ... ça corresponds à quoi ça exactement ?
cs_caviar
Messages postés329Date d'inscriptionsamedi 4 janvier 2003StatutMembreDernière intervention29 mars 20152 13 nov. 2007 à 12:13
ah ouai .. ça peut servir ...
imagines ça dans une boucle ... on attends la réponse avant de continuer la bouche c'est bien ça ? donc ce serai impec pour ce genre de traitement en boucle :) :)
Bon du coup pour ce problème j'ai géré autrement mais le cas se représentra surement...
@+