2009-11-03 18 views
5

que tiene una vista parcial con un desplegable (con Paid and unpaid como opciones) y un botón. Estoy cargando este punto de vista parcial usando jQuery carga, cuando el usuario haga clic en Paid/Unpaid List link en el submenú de una página.problema de diálogo jQuery

Cuando selecciono Pagado en el menú desplegable y hago clic en el botón, se muestra la lista de clientes pagados en el cuadro de diálogo de jquery y si selecciono Sin pagar y hago clic en el botón, se muestran los clientes no pagados en el diálogo de jquery.

estoy escribiendo el siguiente código para el diálogo:

$('#customers').dialog({ 
      bgiframe: true, 
      autoOpen: false, 
      open: function(event, ui) { 
       //populate table 
       var p_option = $('#d_PaidUnPaid option:selected').val(); 
       if (p_option == 'PAID') { 
        $("#customercontent").html(''); 
        //$("#customercontent").load("/Customer/Paid"); 
       } 
       else if (p_option == 'UNPAID') { 
        $("#customercontent").html(''); 
        //$("#customercontent").load("/Customer/Unpaid"); 
       } 
      }, 
      close: function(event, ui) { 
       //do nothing 
      }, 
      height: 500, 
      width: 550, 
      modal: true 
     }); 

Por primera vez, que estoy recibiendo la lista correctamente en el cuadro de diálogo jQuery, pero cuando hago clic en el Paid/Unpaid List link de nuevo y seleccione no remunerado en el menú desplegable y haga clic en el botón, muestra el contenido anterior cargado en el diálogo de jquery.

¿Qué estoy haciendo mal aquí?

Respuesta

4

Trate de añadir ninguna opción de almacenamiento en caché para jQuery AJAX. Tuve problemas con la función load() (y IE) donde siempre se mostrarían los resultados almacenados en caché. Para cambiar la configuración para todas las solicitudes de jQuery AJAX hacen

$.ajaxSetup({cache: false}); 
+0

¿Dónde debo agregar esta línea? antes de cargar la vista parcial? -.. – Prasad

+0

incluso justo antes de diálogo ('#' clientes) $ ({... debería ser suficiente Si tiene cualquier tipo de archivo de arranque Javascript, que es donde normalmente iría –

+0

que he llamado en el evento click del botón antes la apertura de diálogo, pero el problema persiste – Prasad

1

Intenta añadir esto después de abierto:

$('#customers').empty().remove(); 

Ejemplo:

open: function(event, ui) { 
       //populate table 
       var p_option = $('#d_PaidUnPaid option:selected').val(); 
       if (p_option == 'PAID') { 
        $("#customercontent").html(''); 
        //$("#customercontent").load("/Customer/Paid"); 
       } 
       else if (p_option == 'UNPAID') { 
        $("#customercontent").html(''); 
        //$("#customercontent").load("/Customer/Unpaid"); 
       } 

       $('#customers').empty().remove(); 

      }, 
3

espero Im no es demasiado tarde para llegar a respuesta correcta. Tuve el mismo problema y lo resolví con los siguientes ajustes de ajax.

open: function() { 
     jQuery.ajaxSetup({ 
      cache: false 
     }); 
     //populate table or do what you want... 
} 
+0

Esto funcionó para mí ... no fue divertido buscarlo. –