2011-08-11 12 views
7

Próbowałem uruchomić DataTables do pracy z moją istniejącą funkcją wyszukiwania Ajax - która działa sama.DataTables z JSON, AJAX i PHP nie wyświetlające żadnych danych

Mam następujący kod:

 $('#SearchResults').dataTable({ 
      "bProcessing": true, 
      "bServerSide": true, 
      "bRetrieve": true, 
      "sAjaxSource": "process.php?action=searchArtifact", 
      "fnServerData": function (sSource, aoData, fnCallback){ 
       aoData.push({ 
        "name": "searchName", 
        "value": $('#ArtifactSearch').attr('value') 
       }); 
       $.ajax({ 
        "dataType": "json", 
        "type": "POST", 
        "url": sSource, 
        "data": aoData, 
        "success": fnCallback 
       }); 

      } 
     }); 

PHP wraca ważny obiekt JSON (używając JSON_FORCE_OBJECT):

{"0":{"ARTIFACT_ID":"4E2FE3BCE356C","ARTIFACT_NAME":"123","ARTIFACT_TYPE":"UI","ARTIFACT_LABEL":"Test_Int_EAS_123","ARTIFACT_LOCATION":"Int","ARTIFACT_DOMAIN":"ABC","ARTIFACT_AUTHOR":null,"REGISTERED_EMAIL":"[email protected]","REGISTERED_DATE":"27-07-2011","REGISTERED_TIME":"11:09:00"} 

mogę zobaczyć to wszystko jest w porządku w Firebug, ale mój pusty stół nie jest wypełniany tymi danymi.

Wszelkie pomysły?

@Kyle: Errr - to wszystko. Chyba go nie mam? To jest moja pierwsza próba (walka) z DataTables i po prostu kopiuję z dokumentacji: http://www.datatables.net/usage/callbacks#fnServerData

@MarcB: Dodano - ale wciąż brak danych. Dzięki za pomoc:

+0

Chcesz dodać fnCallback funkcjonować swój post, proszę? – Kyle

+0

'sukces: funkcja (dane) {fnCallback (dane); } 'aby wyraźnie przekazać zwrócone dane? –

+0

możesz pokazać nam kod źródłowy PHP, który zwraca wynik? Ponieważ uważam, że nie podał on odpowiedniego formatu, o który prosiłem, http://www.datatables.net/usage/server-side –

Odpowiedz

0

Ta wtyczka oczekuje, że zwracany obiekt JSON będzie obiektem, z właściwością będącą tablicą tablic. Ta właściwość powinna być nazywana "aaData". Nie zwracasz przedmiotu; właśnie zwracasz tablicę.

0

Miałem podobny problem. Okazuje się, że nie formowałem poprawnie odpowiedzi JSON. Ten pracował dla mnie:

<?php 

$arr = array ('aaData' => array(
array('3','35','4', '$14,500', '$15,200','$16,900','5','1'), 
array('1','16','4', '$14,200', '$15,100','$14,900','Running','1'), 
array('5','25','4', '$14,500', '$15,600','$16,900','Not Running','1') 
) 
); 

echo json_encode($arr); 
?> 
0

można usunąć część $ .ajax, zamiast tego można użyć metody $ .getJSON.

0

Można również dodać następujące uniknąć dodając dodatkowy przedmiot jak „aaData”:

"sAjaxDataProp": '' 
0

Co do ustawienia sEcho?

Twój JSON powinna mieć taką strukturę:

{ 
    "sEcho": 'refer to "sEcho" in $_GET or $_POST; don't forget to sanitize', 
    "iTotalRecords": 'for pagination', 
    "iTotalDisplayRecords": 'number displayed', 
    "aaData" => { /* your data here */ } 
} 
Powiązane problemy