2012-09-05 5 views
6

Quando tento di recuperare i dati dal mio database al tavolo, ottengo questo errore:Requested sconosciuto parametro '1' dalla sorgente di dati per la riga 0 a DataTable

DataTables warning (table id = 'student_table'): Requested unknown 
parameter '1' from the data source for row 0 

riportano di seguito le javascript che ho usato

<script type="text/javascript" charset="utf-8"> 
$(document).ready(function() { 
    $('#student_table').dataTable({ 
     "bProcessing": true, 
     "bServerSide": true, 
     "sServerMethod": "POST", 
     "sAjaxSource": "<?php echo base_url()?>index.php/data/all" 
    });    
}); 
</script> 

I dati JSON recuperati:

{"sEcho":0,"iTotalRecords":3, 
"iTotalDisplayRecords":3, 
"aaData":[["85","t1","1D"],["74","test475","4A"], 
["777","maiz","5"]],"sColumns":"id,name,class"} 

Qui di seguito è il mio tavolo:

<table class="datatable tables" id="student_table"> 
    <thead> 
     <tr> 
      <th>ID</th> 
      <th>Name</th> 
      <th>Class</th> 
     </tr> 
    </thead> 
    <tbody> 
     <tr> 
      <td class="dataTables_empty">Loading data from server</td> 
     </tr> 
    </tbody> 
</table> 

codice PHP (DataTable accesi)

$this->load->library('datatables'); 

$this->datatables->select('admission,name,class'); 
$this->datatables->from('students'); 
echo $this->datatables->generate(); 

sto usando CodeIgniter e DataTable.

Perché sto ricevendo quell'errore e come recuperare i dati sul tavolo?

risposta

1

Si sta utilizzando il metodo POST per ottenere i dati. Se segui php nell'esempio fornito con datatables, viene utilizzato il metodo GET. Presumo che quando usi l'ordinamento o la ricerca tutte le richieste siano GET.

+0

ho provato sia GET che POST ma ottengo lo stesso errore. – LiveEn

+0

L'errore deve essere nella parte php, puoi dimostrarlo? – JvdBerg

+0

ho aggiunto il codice php (datatables ignited) al post principale. – LiveEn

0

paio di idee che potrebbero aiutare ...

  1. Assicurarsi che il risposta dal server sia correttamente formattato JSON, con l'intestazione corretta. per esempio. https://stackoverflow.com/a/4064468/661584 non sono sicuro su igniter/php, ma potrebbe essere un problema.

  2. Non sono sicuro del param sColumns è corretto là da sola, credo che sia per il riordino dei colli sul cliente ... e solo utilizzato con sName vedere http://datatables.net/usage/columns#sName e http://datatables.net/usage/server-side

in modo che possa fare casino.

  1. Se qualcos'altro, forse guardare la risposta here ... potrebbe essere di aiuto.

Buona fortuna

14

Ho anche avuto lo stesso problema. Il problema è qui:

<tr> 
      <td class="dataTables_empty">Loading data from server</td> 
</tr> 

avete tre <TH> ma solo uno <td> l'aggiunta di due ulteriori <td> sarà risolvere il tuo errore. Una cosa di più, se non sono disponibili dati verrà visualizzato il messaggio automaticamente non è necessario visualizzare il message.In questo caso è possibile rimuovere questo come verrà fatto automaticamente:

<tr> 
      <td class="dataTables_empty">Loading data from server</td> 
</tr> 

Al fine di personalizzare il messaggio passare questo come un'opzione "sEmptyTable": "Loading data from server"

$('.datatable).dataTable({ 
    "bFilter": false, 
    "bPaginate": false, 
    "bLengthChange": false, 
    "bInfo": false, 
    "oLanguage": { 
    "sEmptyTable": '', 
    "sInfoEmpty": '' 
    }, 
    "sEmptyTable": "Loading data from server" 
}); 
+0

Ti amo. Ho appena passato per sempre a cercare di capirlo. – Chris

+0

Il mio codice usa le colonnine, si spera che le colonnine non causino questo problema anche se sono corrette! – Andy

0

Avevamo problemi simili ...

Ma, prima di impazzire, controlla i dati nelle tabelle. Nel nostro caso, i nostri dati contenevano collegamenti ipertestuali e virgolette inglesi nei dati che popolavano la tabella: le virgolette delle virgolette venivano rimosse quando i dati venivano caricati da un file CSV. La storia breve è che IE non ha potuto affrontarlo, ma Chrome e Firefox l'hanno ignorato.