Tôi đang cố gắng sử dụng chức năng phía máy chủ của plugin jQuery Datatables với ASP.Net. Yêu cầu ajax đang trả lại JSON hợp lệ, nhưng không có gì hiển thị trong bảng.Xử lý bên máy chủ jQuery DataTables và ASP.Net
Tôi ban đầu gặp sự cố với dữ liệu tôi đã gửi trong yêu cầu ajax. Tôi đã nhận được lỗi "Nguyên thủy JSON không hợp lệ". Tôi phát hiện ra rằng dữ liệu cần phải nằm trong một chuỗi thay vì JSON được tuần tự hóa, như được mô tả trong bài đăng này: http://encosia.com/2008/06/05/3-mistakes-to-avoid-when-using-jquery-with-aspnet-ajax/. Tôi đã không hoàn toàn chắc chắn làm thế nào để sửa chữa điều đó, vì vậy tôi đã cố gắng thêm điều này trong yêu cầu ajax:
"data": "{'sEcho': '" + aoData.sEcho + "'}"
Nếu aboves cuối cùng hoạt động, tôi sẽ thêm các thông số khác sau. Ngay bây giờ tôi chỉ đang cố gắng để có được một cái gì đó để hiển thị trong bảng của tôi.
Trả về JSON có vẻ ok và xác thực, nhưng sEcho trong bài đăng không được xác định và tôi nghĩ rằng đó là lý do tại sao không có dữ liệu nào được tải vào bảng.
Vì vậy, tôi đang làm gì sai? Tôi thậm chí có đi đúng hướng hay tôi đang ngu ngốc? Có ai chạy vào điều này trước hoặc có bất cứ đề nghị?
Dưới đây là jQuery tôi:
$(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
trả lại JSON:
{"__type":"Data","sEcho":0,"iTotalRecords":2,"iTotalDisplayRecords":2,"aaData":[["testing","chad","testing"],["testing2","chad","testing"]]}
bạn đã bao giờ nhận được tính năng lọc, phân trang và sắp xếp để hoạt động chưa? –