2010-09-28 7 views
2

Je voudrais imiter le comportement du formulaire html en utilisant jquery. En cliquant sur un bouton, je veux supprimer un commentaire en utilisant:Le formulaire jquery ne recharge pas la page

$(".delete_comment").live('click', function() { 
    var btn = $(this); 
    var param_delete_comment = btn.attr("href"); 
    $.ajax({ 
     url: '/you/ajax_delete_comment/'+param_delete_comment, 
     type: 'POST', 
     async: false 

    }) 
    return false; 
}); 

Le traitement côté serveur semble fonctionner (il supprime les commentaires et renvoyer le bit commentaire du html), mais le bit de commentaire est pas rechargés .

La seule différence que je vois par rapport à un formulaire HTML est que ce dernier a

Content-Type application/x-www-form-urlencoded; charset=UTF-8 

dans les en-têtes de demande.

Quelqu'un peut-il aider?

Merci

juillet

Répondre

1

Vous dites que l'appel AJAX renvoie correctement le code HTML dont vous avez besoin, mais vous ne le faites pas. Utilisez le rappel success:

$(".delete_comment").live('click', function() { 
    var btn = $(this); 
    var param_delete_comment = btn.attr("href"); 
    $.ajax({ 
     url: '/you/ajax_delete_comment/'+param_delete_comment, 
     type: 'POST', 
     async: false, // NB: this is usually a bad idea. 
     success: function(data) { 
      // data is the HTML returned by ajax_delete_comment; use it, e.g.: 
      $('#comment').replaceWith(data); 
     } 
    }) 
    return false; 
}); 
+0

+1 pour votre commentaire ... async: false // NB: c'est généralement une mauvaise idée. –

1

Je pense que le « return false » à la fin de votre événement click empêche le formulaire de soumission. Sur une note de côté, pourquoi utiliser ajax si vous voulez rafraîchir la page entière? Quelque chose à quoi penser.

+0

droite. Je pense que vous voudriez simplement recharger la DIV contenant les commentaires. sinon, pourquoi utiliser AJAX? –

+0

Oui vous avez raison, je veux juste recharger le bit html de commentaire – jul

0

est $(".delete_comment") un bouton soumettre? si c'est le cas, le retour faux est votre problème. Sinon, ajax est spécifiquement destiné à ÉVITER les rechargements de page .. Utilisez un form.submit() appel à la place

3

Pourquoi avez-vous besoin de recharger la page? Si le code côté serveur fonctionne et que le commentaire est supprimé, supprime simplement le commentaire du DOM du côté client, en utilisant la méthode remove().

success: function(){ 
     $('comment').remove(); //might need to change the selector here, 
           //but you should be able to handle that 
    } 
+0

Je dois recharger tout le bit html de commentaire, car il montre également le nombre de commentaires – jul

+0

Vous pourriez diminuer cela par un peut-être? –

Questions connexes