2013-02-12 15 views
5

Ho un modulo che contiene una tabella popolata con dati dinamicamente in base all'opzione selezionata nel menu a discesa.PHP Aggiorna contenuto tabella utilizzando ajax

Il menu a discesa contiene 2 valori "abilitato" e "disabilitato". La prima colonna di ogni riga nella tabella contiene una casella di controllo. La struttura della tabella è la seguente.

[checkbox ]| user | status 

[checkbox1]| jim | enabled 

[checkbox2]| sam | disabled 

Il valore della casella di controllo è uguale a ID utente.

C'è un pulsante per cambiare lo stato degli utenti selezionati.

al clic del pulsante il valore della casella di controllo selezionata viene pubblicato utilizzando ajax e lo stato degli utenti selezionati viene modificato, ma i dati vengono aggiornati solo alla ricarica della pagina.

Come aggiornare la tabella quando lo stato viene modificato. Ecco la mia sceneggiatura.

function Status(){ 
    var checked = [] 
    $("input[name='select[]']:checked").each(function() 
    { 
     checked.push(parseInt($(this).val())); 
    }); 
    if(checked!=''){ 

        $.ajax({ 
         type:'post', 
         url:site_url()+'/common/changeStatus', 
         data:{'checked':checked}, 
         dataType:'json', 
         async:false, 
         success:function(result){ 

          if(result!= "false"){ 
           $.msgBox({ 
            title:"Success", 
            content:"Status change successful" 
           }); 
           $(function() { 
            $('.msgButton').click(function (event) { 
             event.preventDefault(); 
             $("#table").load($(this).attr("#table")); 

            }); 
           });         
          } 

Qui #table è l'ID della tabella che contiene i dati.

+0

tenta di utilizzare $ ('# response_div_id'). Html (risposta ajax); – ripa

+1

@ripa: Dosaggio usando questa append la risposta al div? Qui la mia risposta è vera o falsa – Avinash

+0

nel tuo changeStatus echo lo stato modificato e lo metti nel div di stato. successo: la funzione (risultato) {$ ('# response_div_id') html (risultato);. }); – ripa

risposta

2

Devi costruire la tabella con lo stato corrente nel file PHP stesso. Quindi puoi inviarlo come risposta. Nella risposta Jquery AJAX si deve aggiungere in questo modo,

$(".table").html(resultTable); 

resultTable è la risposta che si sta passando da un file PHP. Se ti piace solo questo, puoi ottenere la tabella con gli stati aggiornati.

+0

Dosaggio utilizzando questa append la risposta al div? Qui la mia risposta è vera o falsa – Avinash

+1

posso fare qualcosa come la pagina di aggiornamento senza postare i dati se il vero altro non fare nulla. Stavo usando location.reload() in precedenza ma il modulo viene nuovamente inviato di nuovo e in firefox si dice che il nuovo avviso della pagina infoemation è fastidioso. – Avinash

+0

Come si può eseguire l'aggiornamento senza ricaricare? È meglio passare il risultato dal controller "changeStatus" e costruire la tabella qui o costruire nel controller e passare la risposta. quindi sostituire la tabella esistente con quella costruita. –

Problemi correlati