IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

jQuery Discussion :

Ajax Jquery : click et declenchement d'update


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 20
    Par défaut Ajax Jquery : click et declenchement d'update
    Bonjour,

    Je débute en Jquery mais je commence à m'en sortir...
    Par contre sur un developpemet en cours j'ai un problème qui perdure.

    Mon Javascript qui pose problème
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    jQuery(document).ready(function () {
     
    	jQuery.noConflict();
     
    	jQuery('div.thumb').click(function(){	
    			var target =  jQuery(this).attr('id'); 
    			jQuery.get('ajax_update3.php', { idpourphp:target});
    			jQuery('#'+target + '> .tick').css('display','block');
    			//alert(target);	
    	});
     
    });
    Mon HTML :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    <div id="mere">
    	<div id="titre">Charly <span>Charly - Fantastique - Série en cours</span></div>
     
    	<div id="1679" class="thumb">
    		<a href="../C/Charly/Charly - T01 - Jouet d'enfer.cbr" target=\"_blank\"> 
    			<img class="ombrage3" src="../C/Charly/Charly - T01 - Jouet d'enfer.jpg" width="200" height="260" >
    		</a>
    		<br>
    		<span class="titre_album">1 - Jouet d'enfer</span>
    		<div class="tick"><img src="./images/principal/tick1.png" ></div>
    	</div>
    	<div id="1680" class="thumb">
    		<a href="../C/Charly/Charly - T02 - L'Ile perdue.cbr" target=\"_blank\"> 
    			<img class="ombrage3" src="../C/Charly/Charly - T02 - L'Ile perdue.jpg" width="200" height="260" >
    		</a>
    		<br>
    		<span class="titre_album">2 - L'Ile perdue</span>
    		<div class="tick" style="display: block "><img src="./images/principal/tick1.png" ></div>
    		</div>
    	<div id="1681" class="thumb"><a href="../C/Charly/Charly - T03 - Le reveil.cbr" target=\"_blank\"> 
    			<img class="ombrage3" src="../C/Charly/Charly - T03 - Le reveil.jpg" width="200" height="260" >
    		</a>
    		<br>
    		<span class="titre_album">3 - Le reveil</span>
    		<div class="tick" style="display: block "><img src="./images/principal/tick1.png" ></div>
    	</div>
    </div>
    Le Fichier ajax_update3.php appelé par JQuery :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $id  = ($_GET['idpourphp']) ;
    $requete = "UPDATE  `BD`.`principal` SET  `down` =  '1' WHERE  `principal`.`id` ='".$_GET['idpourphp']."'";
     
    if(mysql_query($requete))  
    	{echo '1';}
    else  
        {echo '0';}  
    mysql_close();
    Mon problème : quand je clique successivement sur plusieurs DIV class="thumb" seules certaines déclenchent un UPDATE de la BDD, sans logique apparente, ce ne sont pas toujours les mêmes qui posent problèmes.
    Le plus déstabilisant est que si je décommente dans le javascript : Il n'y a plus de problèmes.

    A votre avis qu'est-ce que j'ai fait de mal ?

  2. #2
    Membre chevronné Avatar de beejeridou
    Homme Profil pro
    Webmaster
    Inscrit en
    Février 2007
    Messages
    280
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Février 2007
    Messages : 280
    Par défaut
    Peut etre que les requetes se superposent trop vite... as tu essayé d'utiliser un callback pour la methode jQuery.get(), comme ça ton display block, s'effectuera uniquement quand l'ajax se sera bien déroulé?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
                    jQuery.get('ajax_update3.php', function(data)
    		{
    			jQuery('#'+target + '> .tick').css('display','block');
                            alert(data);
    		});
    Met un echo "test"; à la fin de ton fichier php, pour qu'il s'affiche dans l'alert js.

    Si après ça ce n'est pas résolu, une fois j'ai eu ce genre de soucis, et j'ai mis un sleep(0.5); en bas de mon code php et ça a fonctionné.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 20
    Par défaut
    J'ai créer un fichier de log dans la partie PHP, et effectivement toutes les requêtes n'y sont pas.

    Je penche comme toi pour un problème de délais entre 2 requêtes.

    La première méthode que tu proposes me semble être "propre", je vais tenter.

    En extrême recours j'essaierai le sleep, mais est-ce que ce n'est pas un peu barbare ?

    Ceci dit ça me parait étonnant de ne pas pouvoir réaliser 3 requêtes (qui est véritablement en cause: Ajax ? SQL? PHP?) dans la même seconde. Sachant qu'il n'y a que ça sur le serveur !

    Qu'en pensez-vous ?

  4. #4
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

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

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut
    Bonsoir

    Attention à l'écriture du bloc jQuery.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <script>
    	jQuery.noConflict();
     
    	jQuery(function($){
    		$('div.thumb').click(function(){	
    			var target =  this.id;
     
    			$.get('ajax_update3.php', {"idpourphp":target}, function(data){
    				// data ?
     
    				$('#'+target + '> .tick').css('display','block');
    			});
    		});
    	});
    </script>

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 20
    Par défaut
    Citation Envoyé par beejeridou Voir le message
    Peut etre que les requetes se superposent trop vite... as tu essayé d'utiliser un callback pour la methode jQuery.get(), comme ça ton display block, s'effectuera uniquement quand l'ajax se sera bien déroulé?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
                    jQuery.get('ajax_update3.php', function(data)
    		{
    			jQuery('#'+target + '> .tick').css('display','block');
                            alert(data);
    		});
    Met un echo "test"; à la fin de ton fichier php, pour qu'il s'affiche dans l'alert js.

    Si après ça ce n'est pas résolu, une fois j'ai eu ce genre de soucis, et j'ai mis un sleep(0.5); en bas de mon code php et ça a fonctionné.

    "alert(data)" ne s'execute pas ?!!!

    en fait quand je rajoute function(data)... l'appel du php n'est plus effectué !
    Une idée du pourquoi ?

    Merci

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 20
    Par défaut
    J'avance tout doucement :

    Cela fonctionne avec firefox mais pas avec Chrome et dans la console de ce dernier j'ai un warning que je ne comprends pas :

    "GET http://192.168.0.224/BD/web/ajax_upd...idpourphp=1111 undefined (undefined)"

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 20
    Par défaut
    Donc sa fonctionne au moins avec Firfox et IE.

    Par contre une nouvelle subtilité qui m'échappe totalement :

    si dans mon HTML je remplace (modification de la balise "target"):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <div id="1680" class="thumb">
    		<a href="../C/Charly/Charly - T02 - L'Ile perdue.cbr" target=\"_blank\"> 
    			<img class="ombrage3" src="../C/Charly/Charly - T02 - L'Ile perdue.jpg" width="200" height="260" >
    		</a>
    		<br>
    		<span class="titre_album">2 - L'Ile perdue</span>
    		<div class="tick" style="display: block "><img src="./images/principal/tick1.png" ></div>
    		</div>
    par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <div id="1680" class="thumb">
    		<a href="../C/Charly/Charly - T02 - L'Ile perdue.cbr" target=\"_self\"> 
    			<img class="ombrage3" src="../C/Charly/Charly - T02 - L'Ile perdue.jpg" width="200" height="260" >
    		</a>
    		<br>
    		<span class="titre_album">2 - L'Ile perdue</span>
    		<div class="tick" style="display: block "><img src="./images/principal/tick1.png" ></div>
    		</div>
    cela ne fonctionne plus du tout !

    Une idée ?

  8. #8
    Membre chevronné Avatar de beejeridou
    Homme Profil pro
    Webmaster
    Inscrit en
    Février 2007
    Messages
    280
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Février 2007
    Messages : 280
    Par défaut
    hummm.... le chemin vers ajax_update3.php est-il bon?

Discussions similaires

  1. Jquery/AJAX function click qui ne fonctionne pas.
    Par prome dans le forum jQuery
    Réponses: 2
    Dernier message: 12/03/2009, 12h57
  2. Réponses: 5
    Dernier message: 30/01/2009, 20h20
  3. Réponses: 3
    Dernier message: 16/01/2009, 14h36
  4. Effets après ajax (jQuery)
    Par arena94 dans le forum jQuery
    Réponses: 1
    Dernier message: 12/10/2008, 12h14
  5. Réponses: 1
    Dernier message: 07/10/2008, 12h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo