bagage Posté 27 Août 2010 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.
Ernestine Posté 27 Août 2010 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
bagage Posté 28 Août 2010 Auteur 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.
Ernestine Posté 28 Août 2010 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.
bagage Posté 28 Août 2010 Auteur 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.
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant