bagage Posted August 27, 2010 Share Posted August 27, 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. Link to comment Share on other sites More sharing options...
Ernestine Posted August 27, 2010 Share Posted August 27, 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 Link to comment Share on other sites More sharing options...
bagage Posted August 28, 2010 Author Share Posted August 28, 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. Link to comment Share on other sites More sharing options...
Ernestine Posted August 28, 2010 Share Posted August 28, 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. Link to comment Share on other sites More sharing options...
bagage Posted August 28, 2010 Author Share Posted August 28, 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. Link to comment Share on other sites More sharing options...
Recommended Posts
Please sign in to comment
You will be able to leave a comment after signing in
Sign In Now