使用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

回到顶部