使用jQuery将DataTable传递给Json
我正在尝试执行一个Web服务,该服务返回带有以下代码的DataTable:
$.ajax({ type: "POST",
url: url,
data: data,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg) {
//do things
}
});
如果Web服务返回一个类,则它将起作用,因此它与输入参数等无关。仅当Web方法返回一个数据表(该数据表仅包含2列和2行用于我正在执行的测试)时,它才会失败。
WebService类装饰有[ScriptService]属性,因此我认为ASP.NET将自动将返回值序列化为JSON。它似乎不适用于数据表。
我发现的唯一解决方案是返回一个字符串(一个手动JSON序列化对象),但这样做对我来说似乎不合适。
我正在将Visual Studio 2008与.Net 3.5一起使用
回答:
最后,我决定使用JavaScriptSerializer类将DataTable转换为JSON字符串。不幸的是,该类不适用于DataTable,因此我将DataTable转换为字典列表,并将该列表传递给JavaScriptSerializer类。它只需要几行代码,就可以正常工作。
VB.net中的示例:
Public Function GetJson(ByVal dt As DataTable) As String Dim serializer As System.Web.Script.Serialization.JavaScriptSerializer = New System.Web.Script.Serialization.JavaScriptSerializer()
Dim rows As New List(Of Dictionary(Of String, Object))
Dim row As Dictionary(Of String, Object)
For Each dr As DataRow In dt.Rows
row = New Dictionary(Of String, Object)
For Each col As DataColumn In dt.Columns
row.Add(col.ColumnName, dr(col))
Next
rows.Add(row)
Next
Return serializer.Serialize(rows)
End Function
以上是 使用jQuery将DataTable传递给Json 的全部内容, 来源链接: utcz.com/qa/399030.html