2009-09-28 2 views
5

Come si aggiorna l'elemento (div, classe qualunque) dopo un'altra azione jquery?jQuery: aggiorna div dopo un'altra azione jquery?

Ho questa azione che sta cancellando un record dal database e ho bisogno di aggiornare div che è il recupero di alcuni altri dati dal database di così ...

Ebbene ecco il codice:

$(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; 
    }); 
}); 

Grazie per tutto l'aiuto! :)

+0

Quale elemento si desidera aggiornare? In che modo quell'elemento ottiene i suoi dati dal database in primo luogo? – richsage

+0

Perché non lo consolideresti in un'unica chiamata ajax? Dopo aver eliminato un record, il server restituisce l'HTML per riempire l'elemento scelto. Ha più senso IMO. – karim79

risposta

7

Durante una chiamata AJAX è possibile utilizzare la funzione di successo per eseguire comandi dopo una chiamata riuscita. Hai già una funzione nel tuo codice, quindi è semplicemente questione di aggiornare quella funzione. Anche il secondo div che vorresti aggiornare può essere caricato con AJAX.

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

}); 
+0

Sì, questo è quello che volevo! In realtà solo pochi minuti fa ho trovato da qualche altra parte .load cosa e non ho notato dove metterlo .. :) Grazie! – Marko

0

Perché non aggiungere una funzione che esegue l'aggiornamento dopo che il primo ajax è riuscito (supponendo che non sia possibile combinare i due in un requist ajax che è molto più efficiente).


... 
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(); 
    } 
}); 
... 

Spero che questo aiuti.

5

esporre semplicemente il parametro data della richiamata successo e sostituire il contenuto di qualsiasi elemento, in questo esempio 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); 
    } 
}); 

Vedi ajax options per ulteriori informazioni.

Inoltre, per l'amor di Dio, non utilizzare i nomi dei tipi come nomi di variabili, è davvero spaventoso e terribile pratica, anche se non è una stringreserved word in Javascript (utilizzare data: str o data: dataString invece).

+1

+1 per l'avviso contro le parole riservate! – krillgar

0

quasi tutte le funzioni jquery hanno la possibilità di utilizzare le funzioni di callback. questi vengono chiamati ogni volta che l'azione originale termina l'esecuzione. quindi questo può essere usato con qualsiasi funzione, non solo con Ajax.