Jump to content
Sign in to follow this  
bagage

Utiliser un objet dans une requête ajax

Recommended Posts

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.

Share this post


Link to post
Share on other sites

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 :)

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...