Je suis en train d'utiliser la fonctionnalité côté serveur du plugin jQuery DataTables avec ASP.Net. La requête ajax renvoie un JSON valide, mais rien n'apparaît dans la table.jQuery traitement côté serveur DataTables et ASP.Net
J'ai eu à l'origine des problèmes avec les données que j'envoyais dans la demande ajax. Je recevais une erreur "JSON primative non valide". J'ai découvert que les données doivent être dans une chaîne au lieu de JSON sérialisé, comme décrit dans cet article: http://encosia.com/2008/06/05/3-mistakes-to-avoid-when-using-jquery-with-aspnet-ajax/. Je n'étais pas tout à fait sûr comment résoudre ce problème, donc j'ai essayé d'ajouter ceci dans la demande ajax:
"data": "{'sEcho': '" + aoData.sEcho + "'}"
Si les aboves fonctionne finalement, je vais ajouter les autres paramètres plus tard. En ce moment, j'essaie juste d'avoir quelque chose à montrer dans ma table.
Le retour JSON semble correct et valide, mais le sEcho dans le poste est indéfini, et je pense que c'est pourquoi aucune donnée est en cours de chargement dans la table.
Alors, qu'est-ce que je fais de mal? Suis-je même sur la bonne voie ou suis-je stupide? Est-ce que quelqu'un a rencontré cela avant ou avez-vous des suggestions?
Voici mon jQuery:
$(document).ready(function()
{
$("#grid").dataTable({
"bJQueryUI": true,
"sPaginationType": "full_numbers",
"bServerSide":true,
"sAjaxSource": "GridTest.asmx/ServerSideTest",
"fnServerData": function(sSource, aoData, fnCallback) {
$.ajax({
"type": "POST",
"dataType": 'json',
"contentType": "application/json; charset=utf-8",
"url": sSource,
"data": "{'sEcho': '" + aoData.sEcho + "'}",
"success": fnCallback
});
}
});
});
HTML:
<table id="grid">
<thead>
<tr>
<th>Last Name</th>
<th>First Name</th>
<th>UserID</th>
</tr>
</thead>
<tbody>
<tr>
<td colspan="5" class="dataTables_empty">Loading data from server</td>
</tr>
</tbody>
</table>
WEBMETHOD:
<WebMethod()> _
Public Function ServerSideTest() As Data
Dim list As New List(Of String)
list.Add("testing")
list.Add("chad")
list.Add("testing")
Dim container As New List(Of List(Of String))
container.Add(list)
list = New List(Of String)
list.Add("testing2")
list.Add("chad")
list.Add("testing")
container.Add(list)
HttpContext.Current.Response.ContentType = "application/json"
Return New Data(HttpContext.Current.Request("sEcho"), 2, 2, container)
End Function
Public Class Data
Private _iTotalRecords As Integer
Private _iTotalDisplayRecords As Integer
Private _sEcho As Integer
Private _sColumns As String
Private _aaData As List(Of List(Of String))
Public Property sEcho() As Integer
Get
Return _sEcho
End Get
Set(ByVal value As Integer)
_sEcho = value
End Set
End Property
Public Property iTotalRecords() As Integer
Get
Return _iTotalRecords
End Get
Set(ByVal value As Integer)
_iTotalRecords = value
End Set
End Property
Public Property iTotalDisplayRecords() As Integer
Get
Return _iTotalDisplayRecords
End Get
Set(ByVal value As Integer)
_iTotalDisplayRecords = value
End Set
End Property
Public Property aaData() As List(Of List(Of String))
Get
Return _aaData
End Get
Set(ByVal value As List(Of List(Of String)))
_aaData = value
End Set
End Property
Public Sub New(ByVal sEcho As Integer, ByVal iTotalRecords As Integer, ByVal iTotalDisplayRecords As Integer, ByVal aaData As List(Of List(Of String)))
If sEcho <> 0 Then Me.sEcho = sEcho
Me.iTotalRecords = iTotalRecords
Me.iTotalDisplayRecords = iTotalDisplayRecords
Me.aaData = aaData
End Sub
Returned JSON:
{"__type":"Data","sEcho":0,"iTotalRecords":2,"iTotalDisplayRecords":2,"aaData":[["testing","chad","testing"],["testing2","chad","testing"]]}
avez-vous déjà eu le filtrage, la pagination et le tri pour fonctionner? –