Aller au contenu

Jquery : Ajax avec paramètres...


Sarc

Sujets conseillés

Bonjour à tous,

Ça fait bien peu de temps que j'utilise Jquery. J'ai encore un peu de mal à voir comment on organise bien son fichier JS... D'ailleurs, si vous avez des liens au passage sur l'organisation d'un site avec Jquery. :)

Mon problème est le suivant.

J'ai un tableau de ce style :

Membre 1 : accepter - refuser

Membre 4 : accepter - refuser

Membre 8 : accepter - refuser

J'aimerais qu'en cliquant sur accepter, on appelle une fonction ajax de Jquery avec deux paramètres (l'id du membre, et 1 si accepter, 2 si refuser).

J'ai écrit ça :


$(function() {
accepterourefuser = function(idmembre, choix) {
alert(idmembre);
alert(choix);

$.ajax({
type: "POST",
url: "/changement/accepterourefuser.php",
data: "idmembre="+idmembre+", choix="+choix,
success: function(retour){
alert("ok");
}
});
};
});

Et dans le html, j'ai tenté la chose suivante :

<a href="#" onclick="javascript:accepterourefuser(2, 1)">Accepter</a><a href="#" onclick="javascript:accepterourefuser(2, 2)">Refuser</a>

Bien évidemment, si je viens à vous, c'est que ça ne marche pas. Les deux premiers alert de mon javascript renvoient bien les bonnes données, mais l'ajax ne semble pas se faire, vu que je ne reçois pas de troisième alert.

Auriez-vous une idée du schmilblick ?

Merci d'avance !

Lien vers le commentaire
Partager sur d’autres sites

Tu es sûr de pointer sur la bonne url ?

Essaye de regarder sur firefox avec une extension du type firebug, histoire de voir.

Sinon, je trouve que c'est dommage d'utiliser JQuery, et de laisser autant de "code" nu dans la page.

Personnellement, je créerais les liens directement en JavaScript dans chaque cellule. Ainsi, quelqu'un ne disposant pas de JavaScript n'aurait pas les boutons.

Ou alors, dans l'idéal, il faudrait faire en sorte que les liens puissent fonctionner sans JavaScript (à moins d'un développement spécifique).

Lien vers le commentaire
Partager sur d’autres sites

Niééééé.

Oublié un s. Décidément, le dimanche, faut se reposer, pas coder. Merci Captain de ton il observateur. Pourquoi Firebug n'a pas réagi, ça par contre, c'est la grande question...

Pour le reste de ton message : qu'entends-tu par code nu ? :/

Et que veux-tu dire par "Personnellement, je créerais les liens directement en Javascript dans chaque cellule." ? J'avoue ne pas avoir tout compris de ce que tu aurais fait.

J'essaye de faire un site qui utilise convenablement javascript pour les petites actions, tout en restant accessible à quelqu'un qui n'aurait pas le JS activé. Mais pendant longtemps, j'ai boudé tout ce qui était JS et Ajax, donc j'essaye de me mettre au goût du jour. :)

Lien vers le commentaire
Partager sur d’autres sites

En fait, tu as deux possibilités :

- soit la fonctionnalité est vitale, et dans ce cas, les liens doivent être présents et fonctionnels si JavaScript est désactivé

- soit la fonctionnalité est optionnelle (ou elle reprend une fonctionnalité déjà présente ailleurs), et dans ce cas, il faut que tu crées les liens en JavaScript.

En gros, selon le même principe de séparation présentation/contenu avec HTML et CSS, il faut aussi, pour avoir un code propre, avoir une séparation du contenu et du comportement.

Donc, pas de JavaScript dans tes pages, mais plutôt une fonction dans ton script qui va détecter sur quels éléments placer tes fonctionnalités.

Un petit exemple vaut mieux qu'un long discours (On prend le second cas comme exemple) :

<ul id="liste_users">
<li id="user_1">Sarc</li>
<li id="user_2">Captain_torche</li>
</ul>


function machin() {
$('#liste_users li').each(function() {
// On extrait l'id
var id_element = $(this).attr('id');
var id = id_element.substr(5, id_element.length);
// On ajoute les boutons
$(this).append('<a href="#">Accepter</a>').click(accepterourefuser(id, 1));
$(this).append('<a href="#">Refuser</a>').click(accepterourefuser(id, 2));
});
}

Je viens de le coder "en aveugle", y'a sans doute un kilo de bugs livrés en prime, mais l'idée est là.

Quant à firebug, il ne te hurlera pas au visage si l'url appelée n'existe pas. Il faut fouiller un peu pour voir le résultat de l'appel au fichier. Là, tu devais avoir une page 404.

Lien vers le commentaire
Partager sur d’autres sites

Merci pour les explications !

Pour le JS, je vais réfléchir à la manière de coder ça le plus proprement possible... Sûrement désactiver les liens fonctionnels, avec le JS, et créer les fonctions ajax. Il faut que je voie aussi si je peux utiliser les mêmes scripts PHP de traitement, ça m'arrangerait quand même pas mal. :)

J'ai réussi à séparer le JS du reste. Ce qui m'embête, c'est que ça ressemble vachement à du bricolage maison, tout ça... Les substr(5...)... M'enfin, c'est un début !

Merci encore m'sieur. (Je pense que ça fait un an et demi que c'est toi qui réponds à tous mes sujets :P)

Lien vers le commentaire
Partager sur d’autres sites

Pour le bricolage, ça fonctionne dans tous les cas de figure (C'est juste que comme j'utilise la chaîne "user_x" pour chaque li, il faut supprimer l'élément "user_" pour avoir l'identifiant.

Je viens d'ailleurs de corriger un petit bout de code : je prenais le texte du li et non son ID.

Lien vers le commentaire
Partager sur d’autres sites

Ca , on m'a dit que c'était mal

<a onclick="fonction()" href="#">Clic</a>

Et que ça c'est mieux

<a href="lien.html" class="fonction">Clic</a>

avec ça

$('a.fonction').click(function(){
plein de code...

});

L'onglet réseau/xhr de firebug est effectivement bien utile pour suivre les requetes ajax.

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...