2009-09-28 6 views
5

¿Cómo actualizo el elemento (div, clase whatever) después de otra acción jquery?jQuery: ¿Actualizar div después de otra acción jquery?

tengo esta acción que está suprimiendo un registro de base de datos y que necesito para refrescar div que es ir a buscar algunos otros datos de la base de datos, así ...

Bueno, aquí está el código:

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

Gracias para toda ayuda! :)

+0

¿Qué elemento desea actualizar? ¿Cómo obtiene ese elemento sus datos de la base de datos en primer lugar? – richsage

+0

¿Por qué no consolidar eso en una sola llamada ajax? Al eliminar un registro, el servidor devuelve el HTML para completar el elemento elegido. Tiene más sentido IMO. – karim79

Respuesta

7

Durante una llamada AJAX puede usar la función de éxito para ejecutar comandos después de una llamada exitosa. Ya tiene una función en su código, por lo que es una simple cuestión de actualizar esa función. El segundo div que le gustaría actualizar también se puede cargar con AJAX.

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

}); 
+0

¡Sí, esto es lo que quería! En realidad, hace solo unos momentos encontré algo más en el sitio .load y simplemente no me di cuenta dónde ponerlo :) :) ¡Gracias! – Marko

0

¿Por qué no agregas una función que hace la actualización después de que el primer ajax es exitoso (suponiendo que no se puede combinar con los dos en un ajax requist que es mucho más eficiente).


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

Espero que esto ayude.

5

Simplemente exponga el parámetro data de la devolución de llamada de éxito y reemplazar el contenido de cualquier elemento, en este ejemplo 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); 
    } 
}); 

Ver ajax options para más información.

Además, por el amor de dios, no use nombres de tipos como nombres de variables, que es realmente la práctica de miedo y terrible, a pesar de que no es un stringreserved word in Javascript (o utilizar data: strdata: dataString en su lugar).

+1

+1 para la advertencia de palabras reservadas! – krillgar

0

casi todas las funciones de jquery tienen la capacidad de usar funciones de devolución de llamada. estos se invocan cuando la acción original se termina de ejecutar. entonces esto se puede usar con cualquier función, no solo ajax.