11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour à tous,
j'apprend à utiliser jquery et je bloque sur un truc. j'ai des liens qui vont contenir des paramètres dans leur url, par exemple
work.php?id=2

Seulement avec jquery pour utiliser la fonction .get il semble qu'il faille indiquer les paramètres sous forme d'un tableau et pas dans l'url.
Pour le moment en gardant l'url tel quel (avec les paramètres) lorsque je clique, je suis redirigé vers le résultat de ma requête (je quitte ma page...)

Y a-t-il un moyen simple d'effectuer ma requête avec jquery? Est-ce que je me fourvoie?
merci à tous
Hello,

Tu peux peut-etre utiliser

.load("work.php?id=2");

Et recuperer les parametres dans ton script php ( $_GET['id'] )

C'est plus simple.

Si tu quittes ta page, il manque probablement un 'return:false;' quelquepart
J'avais plus ou moins essayé le load sans succès avec


$(".work").click(function() {
	$.load(this.href,
			function (c) {
				$("#content").html(c);
			}
	);
	return false;
});


mais je quitte toujours ma page, j'ai pourtant bien un "return false;" avant la fin de mon click... je ne devrais pas quitter la page si?
Es tu sur que ton click est bien intercepte? (met un alertbox)

Sinon, ton code devrait ressembler a quelque chose comme ca :


<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(document).ready(function()
   {

	$("body").click(function(event) 
		{
			if ($(event.target).is("#work"))
				{
					$("#work").load(this.href);
					return false;
				}
		});
}); 
</script>
<body>
<a id="work" href="work.php?id=2">click</a>
</body>
Effectivement mon clic n'est pas intercepté:
Les liens sur lesquels je clique sont récupérés dans une requête ajax.J'ai donc essayé deux méthode qui utilisent get:
- Si je marque les liens en dur sur ma page et que je clique dessus, ça fonctionne.
- Si je fais une reqête qui vient m'afficher les liens et que je clique ensuite dessus, rien ne se passe, le code jquery n'est pas exécuté...

En règle générale, on peut récupérer un élément du dom même s'il a été ajouté à la page via httprequest, non?

Je pourrais vous mettre le code jquery mais le probleme ne vient sans doute pas de là étant donné qu'il n'est même pas exécuté.
Sinon les liens récupéré en php via une base sql sont genre:

<a class="work" title="Voir mon lien" href="work.php?id=1">Mon Lien</a>
Non, si l'element est charge dynamiquement par ajax, il faut le faire comme dans mon exemple.

Le bind du click ce fait sur body et non sur un id qui n'est pas encore charge.

l'id #work n'existes pas encore lors du chargment de la page, ($(document).ready), il seras charge en ajax par la suite, tu ne peux donc pas intercepter un click sur un element qui n'existes pas, par contre sur body oui.

Apres un click sur body tu peux utiliser $(event.target) pour retrouver ce sur quoi l'on a clicke dans body.

$(event.target).is("#work")
ou
$(event.target).filter("[@href]")....
etc...
Modifié par Krafton (10 Jun 2008 - 16:07)
merci à toi, j'ai un chouillat galeré parce que je connais peu javascript et encore moins jquery mais le résultat est lisible et fait 3 lignes de code, merci.

pour info j'ai fais comme tu dis le clique sur le "body", ensuite on compare event.target et enfin on charge l'attribut "href", ce qui donne


// On détecte les cliques sur le body
$("body").click(function(event) {

	// On vérifie l'id du lien, ici "works"
	if ( $(event.target).is("#works")  ){

		// On affiche dans "submenu" le résutat de la requête faite sur le href de "works"
		$.get( $(source).attr("href"), 
			function (c) {
				$("#submenu").html(c);
			}
		);
	}
});


merci Krafton, merci à tous, merci la vie.
Modifié par cucureuil (10 Jun 2008 - 17:15)