Non entro in merito a questo discorso ma con quel load() mi pare che tu stia facendo un doppio passaggio. Infatti il load() non è altro che una chiamata AJAX semplificata (diciamo così), per cui tu stai sostanzialmente facendo una chiamata dentro l'altra. La cosa mi pare contorta.Ho modificato il refresh, aggiorno soltanto la parte relativa alla tabella e non tutto il div "container";
Ad ogni modo, il punto del problema sta nella perdita dei riferimenti dell'istanza dataTable.
Non ho troppa esperienza con tale funzionalità ma personalmente avrei aggiornato l'intero container (come da tua situazione iniziale) e quindi, al success della chiamata AJAX, avrei ricreato l'istanza con $('#datatable').dataTable(... Chiaramente è solo un'ipotesi, eventualmente bisognerebbe verificarne il funzionamento.
Se invece aggiorni solo la tabella, come hai fatto poi, (mantenendo intatto l'involucro dell'elemento #datatable) forse potresti risolvere col metodo draw() che dovrebbe "aggiornare" i riferimenti ai nuovi dati inseriti. Dico "forse" perché tale metodo è usato dopo l'aggiunta o l'eliminazione di righe nella tabella esistente (come indicato nella documentazione) per cui non so se possa funzionare anche quando viene rigenerato l'intero contenuto della tabella. Vedi magari anche l'eventuale uso dei parametri, descritti nella documentazione.
Tieni conto che in questo caso dovresti usare tale metodo solo dopo l'effettivo aggiornamento che dovrebbe essere determinato al completamento del load() (in quanto si tratta appunto di una chiamata AJAX, quindi un processo di tipo asincrono). In sostanza dovresti usarlo dentro la relativa funzione di callback.
Fai qualche prova.


Rispondi quotando