bagage Posté 27 Août 2010 Partager Posté 27 Août 2010 Bonjour, Voici ce code: $('.formEditComment').submit(function() { var commentContent = $(this).next().text(); var taEditComment = $(this).find('textarea').val(); var idComment = $(this).find('.idComment').val(); if(jQuery.trim(taEditComment) && commentContent != taEditComment) { var dataString = 'taEditComment='+ taEditComment + '&idComment='+ idComment +'&ajaxVideoEditComment=1&ajaxje=1'; $.ajax({ type: "POST", url: "ctl/videos.ctl.php", data: dataString, cache: false, success: function(html){ $(this).find('textarea').empty(); $(this).hide(); $(this).next().empty(); $(this).next().append(html); $(this).next().effect("slide", { direction: "down" }, 500, function() { $(formEditComment).next().show(); }); }, error: function(msg){ alert('The request failed, please try again') } }); return false; } else { return false; }}); La plupart des actions marche sauf quand on en vient à traiter la fonction "success" de la requête ajax, aucune des actions concernant celle-ci ne marche, il semble que l'appel à l'objet this ne soit pas le même à l'intérieur d'une requête AJAX qu'à l'extérieur... Par exemple : var taEditComment = $(this).find('textarea').val(); je veux cacher ça dès que la requête ajax réussie comme je l'ai fait ci dessous : $(this).find('textarea').empty(); Pourquoi ça ne marche pas à l'intérieur de la requête ajax alors qu'à l'extérieur c'est ok ? Comment faire ? Merci d'avance. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Ernestine Posté 27 Août 2010 Partager Posté 27 Août 2010 Salut, Le $(this) dans ta fonction de succès Ajax ne fait pas référence au formulaire, puisque tu es dans la fonction. Il faut que tu attribues un id à ton textarea (et les autres éléments du formulaire), ce qui te permettra de la manipuler à l'intérieur de ta fonction Lien vers le commentaire Partager sur d’autres sites More sharing options...
bagage Posté 28 Août 2010 Auteur Partager Posté 28 Août 2010 Salut, Le $(this) dans ta fonction de succès Ajax ne fait pas référence au formulaire, puisque tu es dans la fonction. Il faut que tu attribues un id à ton textarea (et les autres éléments du formulaire), ce qui te permettra de la manipuler à l'intérieur de ta fonction Merci de ta réponse, je m'en doutais bien pour ce $this, merci de ta confirmation, cependant, j'utilise la classe car j'ai plusieurs formulaire sur une seule page sinon j'aurai bien évidemment utiliser un id. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Ernestine Posté 28 Août 2010 Partager Posté 28 Août 2010 Dans la documentation de jQuery, à la fonction $.ajax, on lit : context This object will be made the context of all Ajax-related callbacks. For example specifying a DOM element as the context will make that the context for the complete callback of a request, like so: $.ajax({ url: "test.html", context: document.body, success: function(){ $(this).addClass("done"); }}); Page : http://api.jquery.com/jQuery.ajax/ Ce paramètre context devrait permettre de répondre à ton problème, je pense... piste à creuser. Lien vers le commentaire Partager sur d’autres sites More sharing options...
bagage Posté 28 Août 2010 Auteur Partager Posté 28 Août 2010 Salut, oui c'est exactement ce que je cherchai, mille merci. J'ai mit context : this pour qu'il prennent l'objet courant, donc la classe .formEditComment dans mon code et ça marche. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant