Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript > Bibliothèques & Frameworks > jQuery
jQuery Forum d'entraide sur le framework jQuery. Avant de poster : Tutoriels jQuery, FAQ jQuery, Tous les tutoriels JavaScript, Toutes les FAQ JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/07/2011, 01h52   #1
 
Blais Yvon
Inscription : février 2010
Messages : 4
Détails du profil
Informations personnelles :
Nom : Blais Yvon

Informations forums :
Inscription : février 2010
Messages : 4
Points : -2
Points : -2
Par défaut Evaluation de HTML avec Ajax

Bonjour à tous

Je travaille avec jQuery 1.6.1 et voici mon petit problème que je ne comprend pas. je vous fournis le code pour une meilleru compréhension.

j'insère dans une liste un élément en (1). Cet élément est connu de jQuery car je peux appliquer des opérations sur cet élément.

En (2), je place un appel a ajax() et j'insère dans la même liste. Aucundes 3 nouveaux éléments insèrés n'est reconnu par jQuery. Pourquoi?
Ou est l'erreur que je fais?
merci beaucoup pour votre aide

(1)
Code :
1
2
3
4
5
$('#select1').append( '<li id="9">9</li> ' );
 
function insertData( a ) {
	$('#select1').append( a );
}
(2)
Code :
1
2
3
4
5
6
7
8
9
10
$.ajax({
	dataType:'html',
	cache:true,
	type:'GET',
	url:"ajax/menu.php?list",
	success: function(r,s){
		insertData('<li id="10">10</li> ' );
		$('#select1').append( '<li id="8">8</li> ' );
	}
});
YvonBlais est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 21/07/2011, 08h33   #2
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 019
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 019
Points : 45 114
Points : 45 114
Code :
$('#select1').append( $('<li id="8">8</li>') );
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/07/2011, 22h38   #3
Rédacteur
 
Avatar de danielhagnoul
 
Homme Daniel Hagnoul
Étudiant perpétuel
Inscription : février 2009
Messages : 3 221
Détails du profil
Informations personnelles :
Nom : Homme Daniel Hagnoul
Âge : 61
Localisation : Belgique

Informations professionnelles :
Activité : Étudiant perpétuel
Secteur : Enseignement

Informations forums :
Inscription : février 2009
Messages : 3 221
Points : 6 767
Points : 6 767
Bonsoir

Un ID doit être unique et il doit commencer par un caractère alphabétique.

Exemple :

Code :
1
2
3
<ul id="listeID">
	<li id="li1">Un</li>
</ul>
Code :
1
2
3
4
5
6
7
8
9
$("#listeID").append('<li id="li2">Deux</li>');
 
// test 1
$("#listeID").children().each(function(i, item){
	console.log(i, this.id, $(this).text());
});
 
// test 2
$("#li2").css("color", "red");
__________________

FAQ jQuery

Mon cahier d’exercices sur jQuery & Co

Si un message vous a aidé ou vous semble pertinent, votez pour lui !
danielhagnoul est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/07/2011, 08h52   #4
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 019
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 019
Points : 45 114
Points : 45 114
:red:
j'ai honte de faire du copier coller comme ça !!!

j'ai même pas vu l'id nulérique

Milles excuses ..
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/07/2011, 20h07   #5
 
Blais Yvon
Inscription : février 2010
Messages : 4
Détails du profil
Informations personnelles :
Nom : Blais Yvon

Informations forums :
Inscription : février 2010
Messages : 4
Points : -2
Points : -2
J'ai finalement trouvé la réponse à mon problème.

Je suis d'accord que le ID doit etre unique et qu'il doit commencer par un caractère alpha, mais c'étatit pas la question que je posais. La question était au niveau de l'évaluation AJAX.

Alors, si j'ai bien compris. Ajax fait un appel asynchone au serveur HTTP et lorsque la réponse retourne du serveur, le success: est éxécuté commme dans un THREAD. Nous ne sommes donc plus dans le CONTEXTE de jQuery.

En ajoutant un ASYNC: FALSE a la requête AJAX, cela force de conserver le contexte de jQuery

Merci quand même des réponses reçues
YvonBlais est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/07/2011, 20h23   #6
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 807
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2008
Messages : 13 807
Points : 35 803
Points : 35 803
Citation:
Nous ne sommes donc plus dans le CONTEXTE de jQuery.
Bien sûr que si...

Citation:
En ajoutant un ASYNC: FALSE a la requête AJAX, cela force de conserver le contexte de jQuery
Non, ça force juste à attendre que le serveur ai renvoyé sa réponse pour continuer les traitements, ce que tu ne faisais manifestement pas avant.
Il faut bien comprendre que lorsque tu fais une requête au serveur, tu n'obtiens pas de résultat instantanément comme par magie, il faut attendre que la requête soit acheminée, que le serveur travaille, qu'il envoie la réponse et que le navigateur la reçoive. Donc si pendant ce temps tu essayes d'utiliser les résultats qui ne sont pas encore arrivés, ben forcément, ça marche moins bien

Mais cela, on ne pouvait pas le deviner tant que tu ne l'avais pas dit...
__________________
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Bovino est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/07/2011, 23h34   #7
 
Blais Yvon
Inscription : février 2010
Messages : 4
Détails du profil
Informations personnelles :
Nom : Blais Yvon

Informations forums :
Inscription : février 2010
Messages : 4
Points : -2
Points : -2
Merci Bovino pour ta réponse

Citation:
Envoyé par Bovino Voir le message
Bien sûr que si...


Non, ça force juste à attendre que le serveur ai renvoyé sa réponse pour continuer les traitements, ce que tu ne faisais manifestement pas avant.
Il faut bien comprendre que lorsque tu fais une requête au serveur, tu n'obtiens pas de résultat instantanément comme par magie, il faut attendre que la requête soit acheminée, que le serveur travaille, qu'il envoie la réponse et que le navigateur la reçoive. Donc si pendant ce temps tu essayes d'utiliser les résultats qui ne sont pas encore arrivés, ben forcément, ça marche moins bien

Mais cela, on ne pouvait pas le deviner tant que tu ne l'avais pas dit...
Je sais très bien que les données doivent être transmises au serveur et que le serveur doit retourné la reponse à la requête.

Si tu regardes le code sur le POST initial, je traitais l'information retourné par le serveur sur comme suit:

Code :
1
2
3
4
5
6
7
8
9
10
11
$.ajax({
	dataType:'html',
	cache:true,
	async:false,
	type:'GET',
	url:"ajax/menu.php?list",
	success: function(r,s){
		insertData('<li id="10">10</li> ' );
		$('#select1').append( '<li id="A8">A8</li> ' );
	}
});
Alors, si je suis toujours dans le contexte de jQuery, pourquoi est-ce que si j'insère les données retournées par le serveur avec une requete AJAX ASYNC:true, les données sont insèrées mais jQuery ne les reconnait pas, et si je le fais avec ASYNC:false, jQuery les reconnait.
YvonBlais est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 23/07/2011, 14h03   #8
Membre éclairé
 
Homme
F5(){F5}
Inscription : avril 2008
Messages : 256
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : F5(){F5}
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : avril 2008
Messages : 256
Points : 320
Points : 320
Code :
Alors, si je suis toujours dans le contexte de jQuery, pourquoi est-ce que si j'insère les données retournées par le serveur avec une requete AJAX ASYNC:true, les données sont insèrées mais jQuery ne les reconnait pas, et si je le fais avec ASYNC:false, jQuery les reconnait.
Salut,

Jpense que tu fais une fause interprétation du problème.
Que ca soit synchrone ou pas ca a rien avoir avec le contexte de jQuery.

Synchrone ca veut dire que tant que ton callback est pas exécuté tu passes pas à la suite du code.
Asynchrone ca veut dire que tu continues ton stuff et un beau jour tu executes le callback.

Alors c'est sur que si tu fais une asynchrone
Code :
1
2
3
4
5
6
7
8
9
10
11
12
$.ajax({
	dataType:'html',
	cache:true,
	type:'GET',
	url:"ajax/menu.php?list",
	success: function(r,s){
		insertData('<li id="10">10</li> ' );
		$('#select1').append( '<li id="A8">A8</li> ' );
	}
});
//et que derriere tenquilles
$('#select1').remove();
forcément quand ton callback success est appelé, c'est très probable que ton navigateur a eu le temps de défoncer ton select.

Chose qui n'est pas possible en synchrone vu que tu exécutes pas $('#select1').remove();
tant que tu n'as pas eu de callback.

Je me souviens d'ailleurs que la synchrone fait friser le navigateur mais c'était jQuery il y a trois ans, cela dit, je vois pas cqu'ils auraient pu faire de mieux compte tenu de la nature du langage.

Bref, il serait préférable que tu mettes ton code javascript où tu testes ton truc ET ton code html.
galerien69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/07/2011, 17h55   #9
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 807
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2008
Messages : 13 807
Points : 35 803
Points : 35 803
Citation:
Si tu regardes le code sur le POST initial, je traitais l'information retourné par le serveur sur comme suit
Comme le fait remarquer galerien69, la question n'est pas de savoir quand les données sont intégrées à la page mais quand tu essayes de les traiter !

Citation:
Alors, si je suis toujours dans le contexte de jQuery, pourquoi est-ce que si j'insère les données retournées par le serveur avec une requete AJAX ASYNC:true, les données sont insèrées mais jQuery ne les reconnait pas, et si je le fais avec ASYNC:false, jQuery les reconnait.
Soit parce que ton ordinateur est au-dessus d'un ancien cimetière de chats noirs indiens, soit parce que tu tentes de traiter les éléments avant que le callback ai été appelé...
__________________
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Bovino est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 24/07/2011, 12h40   #10
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 019
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 019
Points : 45 114
Points : 45 114
Code :
$('#select1').append($(a) );
tu passes un string de html ...
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h29.


 
 
 
 
Partenaires

Hébergement Web