ajax et lien

Par alariel29, il y a 9 ans


Bonjour,

Je souhaiterais effectuer une requête ajax lorsque je clique sur un lien .
Voici l'exemple du lien :

<a onclick="fonction1();return false;" alt="activation=1" href= <?php echo("../Controler/controler_liste_utilisateur.php?id=" . $informations_utilisateur['nni'] . "&activation=1")?>> Activer </a> `` ` Ce serait donc une requête ajax de type GET mais je n'arrive pas à faire passer les variables. Merci d'avance

7 réponses

betaWeb, il y a 9 ans

Salut,

// HTML <a onclick="send(this); return false;" alt="activation=1" href= <?php echo("../Controler/controler_liste_utilisateur.php?id=" . $informations_utilisateur['nni'] . "&activation=1")?>> Activer </a> // JS var send = function (context) { var href = context.getAttribute('href'); if (!href || (href && 0 === href.length)) { return false; } var uri = href.split('?')[1] || [], data = {}; if (!uri || (uri && 0 === uri.length)) { return false; } uri = uri.split('&'); uri.forEach(function (item) { item = item.split('='); data[item[0]] = item[1]; }); console.log(data); // Debug des data // Ton appel AJAX ici return false; };
alariel29, il y a 9 ans

J'obtient un SyntaxError: missing ; before statement au niveau de la première ligne de js (le var send(context))
Je comprend plus ou moins la logique, prendre les différentes informations à partir de l'url dans le href en les splittant.

betaWeb, il y a 9 ans

Autant pour moi, j'ai édité le code (l'erreur de frappe était évidente).
Oui c'est ça, tu split la string et tu récup les infos dont tu as besoin ;)

alariel29, il y a 9 ans

là du coup, il n'y a plus d'erreur , (tu éditera, il manque une parenthèse a ta première condition)
Cependant, ma page se recharge quand je clique au lieu de juste faire l'appel a la fonction.

betaWeb, il y a 9 ans

A ce moment là, essaye plutôt ça :

// HTML <a class="ajax-link" alt="activation=1" href= <?php echo("../Controler/controler_liste_utilisateur.php?id=" . $informations_utilisateur['nni'] . "&activation=1")?>> Activer </a> // JS var send = function (context) { var href = context.getAttribute('href'); if (!href || (href && 0 === href.length)) { return false; } var uri = href.split('?')[1] || [], data = {}; if (!uri || (uri && 0 === uri.length)) { return false; } uri = uri.split('&'); uri.forEach(function (item) { item = item.split('='); data[item[0]] = item[1]; }); console.log(data); // Debug des data // Ton appel AJAX ici return false; }; var ajax_links = document.querySelectorAll('.ajax-link'); Array.prototype.forEach.call(ajax_links, function (link) { link.addEventListener('click', function (e) { e.preventDefault(); send(link); return false; }); });
alariel29, il y a 9 ans

Bonjour,

Alors j'obtiens bien dans la console les données dont j'ai besoin.
il ne me reste plus qu'a faire l'ajax get.
Si j'ai bien compris, on selectionne tous les liens de classe ajax-link et on effectue la fonction send dès qu'une action click se produit dessus?

betaWeb, il y a 9 ans

Voilà c'est ça ;)