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 :

Compteur de clic jquery/ajax


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Août 2021
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Août 2021
    Messages : 2
    Par défaut Compteur de clic jquery/ajax
    Bonjour à tous,
    J'aimerais écrire plus proprement le code jquery plus bas,
    le principe,
    un fichier tpl affiche une liste de bannières avec leurs liens.
    un fichier jquery qui appelle avec ajax le fichier php "suivi-lien.php" qui lui enregistre dans la bdd le clic ainsi que d'autres infos.

    Le problème est que l'id de la balise <a> et à chaque fois différent, d'où cette répétition dans le code jquery,
    l'idée serait de pouvoir récupérer l'id de la balise <a> dans jquery pour ne le traiter qu'une seule fois, mais je ne sais pas faire ça...

    D'avance merci

    fichier tpl
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    {foreach $selpub as $pub}
    <div class="affichepub">
    	<a id="ban{$pub.id}" class="suivi" target="_blank" title="{$pub.title}" href="{$pub.url}"><img alt="" src="img/pub/{$pub.img}"/></a>
    </div>
    {/foreach}


    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
    16
    17
    18
    19
    20
    21
    22
    	$(document).on('click','#ban1',function(){
    		$.ajax({
    			type : 'GET',
    			url : 'suivi-lien.php?ban=1'
    		});
    	});
     
    	$(document).on('click','#ban2',function(){
    		$.ajax({
    			type : 'GET',
    			url : 'suivi-lien.php?ban=2'
    		});
    	});	
     
    	$(document).on('click','#ban3',function(){
    		$.ajax({
    			type : 'GET',
    			url : 'suivi-lien.php?ban=3'
    		});
    	});
     
           // etc... une vingtaine de bannières

  2. #2
    Membre Expert
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 495
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 495
    Par défaut
    salut, tu as deja un probleme de conprehention : tu ne dois pas definir X events click car ils vont se cumuler..
    quand tu definis X evenements click sur le document : a chaque fois qu'il y aura un click, TOUS vont s'executer
    => si j'ai bien compris, tu ne veux faire un ajax QUE sur la banniere cliquee

    => tu dois cibler chaque banniere, mais avant, je te conseilles de passer par les dataset des elements plutot que par un ID (car d'apres ton exemple, ton ID que tu cherches n'est pas "banX" mais juste "X". pour ca, utilises data-*

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    {foreach $selpub as $pub}
    <div class="affichepub">
    	<a data-id="{$pub.id}" class="suivi" target="_blank" title="{$pub.title}" href="{$pub.url}"><img alt="" src="img/pub/{$pub.img}"/></a>
    </div>
    {/foreach}
    apres, tu cibles chaque lien pour faire un traitement dessus (pas besoin de jquery : du JS "natif" le fait tout aussi bien )
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    document.querySelectorAll('.affichepub a').forEach(link => {
        link.addEventListener('click', function() {
            fetch(`suivi-lien.php?ban=${this.dataset.id}`);
        });
    });
    La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

    Venez discuter sur le Chat de Développez !

  3. #3
    Candidat au Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Août 2021
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Août 2021
    Messages : 2
    Par défaut Un grand merci
    Merci Docksuri, j'ai pas mal ramé, le js c'est pas vraiment mon truc...
    finalement j'ai fait ça et ça marche nickel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    	$(document).on('click','.affichepub a',function(){	
    		var dataId = $(this).attr("data-id");
    		$.ajax({
    			type : 'GET',
    			url : 'suivi-lien.html?ban='+ dataId
    		});
    	});

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Compteur de clics
    Par Tee shot dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 05/06/2007, 16h12
  2. [Tableaux] Réaliser un compteur de clic sur un lien
    Par Klimium dans le forum Langage
    Réponses: 15
    Dernier message: 22/10/2006, 22h29
  3. [MySQL] Compteur de clics simple
    Par jim1 dans le forum PHP & Base de données
    Réponses: 13
    Dernier message: 28/12/2005, 20h18
  4. Aide : Compteur de clic et clic sortant
    Par nono29370 dans le forum Général JavaScript
    Réponses: 17
    Dernier message: 24/11/2005, 16h47
  5. compteur de clic et liens en dur?
    Par xtaze dans le forum Langage
    Réponses: 6
    Dernier message: 16/10/2005, 13h47

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