2017-03-20 1 views
0
"ajax": { 
      "url": url, 
      "type": "GET", 
      "datatype": "json", 
      "data": { id: id} 
      //, 
      //"success": function (data) { 
      // if (!data.data) 
      //  ShowErrorMessage(data.message); 
      //} 
     }, 
     "columns": [ 
       { "data": "ID" }, 
       { "data": "Name" }, 
       { "data": "Time" } 
     ], 
     "columnDefs": [{ 
      "targets": 2, 
      "data": "Time", 
      "render": function (data) { 
       return (ToJavaScriptDate(data)); 
      } 
     }] 
    }); 

Über dem Beispielcode, der eine Datentabelle mit Ajax GET-Aufruf auffüllen wird. Das Problem hier ist, manchmal werde ich eine gültige Fehlermeldung anstelle der Tabelle Daten von Ajax Antwort zurückgeben.jQuery Datatable - Fehlermeldung von Ajax Anruf

Wenn also Daten in data.data vorhanden sind, muss ich die Tabelle auffüllen, und wenn Daten nicht da sind, muss ich die data.message als benutzerdefinierte Fehlermeldung auffüllen. Hier sind beide Aufrufe Erfolgsaufrufe, aber ob der Tabelleninhalt oder die Fehlermeldung angezeigt wird, hängt davon ab.

Ich habe versucht, „Erfolg“ -Attribut, aber ich bin nicht sicher, wie Sie manuell die Spalten binden, wenn Daten in data.data

ist
+0

https://datatables.net/reference/option/language.emptyTable –

+0

@AlivetoDie Ich verstehe, ich kann für leere Tabelle Nachricht gehen. Die Kompliziertheit hier ist, muss ich die Nachricht füllen, die ich von der ajax Antwort als leere Tabellenmitteilung erhielt –

Antwort

1

Der beste Weg language.emptyTable Option zu verwenden wäre.

Da Sie jedoch Nachricht von der Ajax-Antwort verwenden möchten, gibt es einen hacky Weg, es zu tun.

var table = $('#example').DataTable({ 
    ajax: { 
     url: 'https://api.myjson.com/bins/if7vf', 
     dataSrc: function(d){ 
      if(d.data.length === 0){ 
      var settings = $('#example').DataTable().settings()[0]; 
      settings.oLanguage.sEmptyTable = d.message; 
      } 

      return d.data; 
     } 
    } 
}); 

Siehe this example für Code und Demonstration.

+0

Dank. Bitte helfen Sie, eine bestimmte Spalte zu manipulieren. Wie in Frage erwähnt ("Zeit") und wenige sind verdeckte Spalten –

+0

@TechJerk, wenn Sie 1 Datenzeile haben möchten, wenn keine Daten verfügbar sind, dann statt 'sEmptyTable' Variable setzen Sie könnten etwas wie' d.data tun. push ({'ID': '', 'Name': '', 'Zeit': d.Message}) 'um 1 neue Zeile hinzuzufügen, wenn keine Daten vorhanden sind. –