2009-09-28 9 views
5

Comment actualiser un élément (div, class any) après une autre action jquery?jQuery: Actualiser div après une autre action jquery?

J'ai cette action qui supprime un enregistrement de base de données et je dois rafraîchir div qui est aller chercher d'autres données de base de données et ...

Code est bien ici:

$(function() { 
    $(".delete").click(function() { 
     var commentContainer = $(this).parent(); 
     var id = $(this).attr("id"); 
     var string = 'id='+ id ; 

     $.ajax({ 
      type: "POST", 
      url: "delete.php", 
      data: string, 
      cache: false, 
      success: function(){ 
       commentContainer.slideUp('slow', function() {$(this).remove();}); 
      } 
     }); 

     return false; 
    }); 
}); 

Merci pour toute aide! :)

+0

Quel élément souhaitez-vous actualiser? Comment cet élément obtient-il ses données de la base de données en premier lieu? – richsage

+0

Pourquoi ne pas consolider cela en un seul appel ajax? Lors de la suppression d'un enregistrement, le serveur renvoie le code HTML pour remplir l'élément choisi. Donne plus de sens à l'OMI. – karim79

Répondre

7

Lors d'un appel AJAX, vous pouvez utiliser la fonction de réussite pour exécuter des commandes après un appel réussi. Vous avez déjà une fonction dans votre code, il suffit donc de mettre à jour cette fonction. Le second div que vous aimeriez mettre à jour peut également être chargé avec AJAX.

$.ajax({ 
    //other options 
    success:function(){ 
     commentContainer.slideUp('slow', function() {$(this).remove();}); 
     $('#otherdiv').load('urlofpagewith info.php'); 
    } 

}); 
+0

Oui c'est ce que je voulais! En fait, il y a quelques instants, j'ai trouvé quelque chose d'autre chose .load et juste pas remarqué où le mettre .. :) Merci! – Marko

0

Pourquoi ne pas ajouter une fonction qui fait le rafraîchissement après le premier ajax est un succès (en supposant que vous ne pouvez pas combiner les deux dans un requiste ajax qui est beaucoup plus efficace).


... 
function doRefresh_ofAnotherDiv() { 
    $.ajax({ 
     type: ..., 
     url: ..., 
     data: ..., 
     cache: ..., 
     success: function(){ 
     // updateAnotherDiv(); 
     } 
    }); 
} 
... 
$.ajax({ 
    type: "POST", 
    url: "delete.php", 
    data: string, 
    cache: false, 
    success: function(){ 
     commentContainer.slideUp('slow', function() {$(this).remove();}); 
     doRefresh_ofAnotherDiv(); 
    } 
}); 
... 

Espérons que cela aide.

5

simplement le paramètre exposer data du rappel de succès et remplacer le contenu du fichier élément, dans cet exemple div id = "someDiv":

$.ajax({ 
    type: "POST", 
    url: "delete.php", 
    data: string, 
    cache: false, 
    success: function(data){ 
    commentContainer.slideUp('slow', function() {$(this).remove();}); 
    $('#someDiv').html(data); 
    } 
}); 

Voir ajax options pour plus d'informations.

En outre, pour l'amour de Dieu ne pas utiliser les noms de type comme noms de variables, il est vraiment pratique effrayant et terrible, même si string n'est pas un reserved word in Javascript (utilisez data: str ou data: dataString à la place).

+1

+1 pour l'avertissement contre les mots réservés! – krillgar

0

presque toutes les fonctions de jquery ont la capacité d'utiliser des fonctions de rappel. ils sont appelés chaque fois que l'action d'origine est terminée. donc cela peut être utilisé avec n'importe quelle fonction, pas seulement ajax.