1、后台WebService返回DataSet、方法如下:
[WebMethod]
public DataSet GetDataSet()
{
DataSet ds = new DataSet();
DataTable dt = new DataTable();
dt.Columns.Add("Id", typeof(Int32));
dt.Columns.Add("Name", typeof(string));
for (int i = 0; i < 55; i++)
{
DataRow row = dt.NewRow();
row["Id"] = i;
row["Name"] = "RockHe" + i;
dt.Rows.Add(row);
}
ds.Tables.Add(dt);
return ds;
}
2、前台Jquery以Ajax请求此方法、并且返回数据已Json形式返回、代码如下:
$.ajax({
type: "POST",
contentType: "application/json",
url: "Service/RockHeService.asmx/GetDataSet",
data: "{}",
dataType: "json",
success: function (result) {
alert(result.d);
},
error: function (result) {
alert(result.d);
}
});
请求时报如下异常大致如下:{"Message":"序列化类型为“System.Globalization.CultureInfo”的对象时检测到循环引用。","StackTrace":" 在 System.Web.Script.Serialization.JavaScriptSerializer.SerializeValueInternal(O.....................
引发这个异常是DataSet转换Json格式的时候报错、解决方案如下:
在web.config中配置如下代码:
<system.web.extensions>
<scripting>
<webServices>
<jsonSerialization>
<converters>
<add name="DataSetConverter" type="Microsoft.Web.Preview.Script.Serialization.Converters.DataSetConverter, Microsoft.Web.Preview"/>
<add name="DataRowConverter" type="Microsoft.Web.Preview.Script.Serialization.Converters.DataRowConverter, Microsoft.Web.Preview"/>
<add name="DataTableConverter" type="Microsoft.Web.Preview.Script.Serialization.Converters.DataTableConverter, Microsoft.Web.Preview"/>
</converters>
</jsonSerialization>
</webServices>
</scripting>
</system.web.extensions>
记的上面要导入Microsoft.Web.Preview.dll 这个Dll 才能正常使用、不然会报错误、大致如下:
<title>找不到类型“Microsoft.Web.Preview.Script.Serialization.Converters.DataSetConverter, Microsoft.Web.Preview”。</title>.......................
解决方法: 去http://go.microsoft.com/fwlink/?LinkID=77294下载"Microsoft ASP.NET AJAX Futures CTP"
安装好后,在默认安装文件夹(C:/Program Files/Microsoft ASP.NET/ASP.NET 2.0 AJAX Futures January CTP/v1.0.61025)中可以找到. 然后copy Microsoft.Web.Preview.dll 到项目的Bin目录下就ok了
本文介绍了使用jQuery通过Ajax调用WebService返回DataSet时遇到的JSON序列化异常问题。当尝试将DataSet转换为JSON格式时,系统抛出循环引用错误。为解决此问题,可以在web.config中添加特定的转换器配置,并引入Microsoft.Web.Preview.dll。通过这些步骤,可以成功将DataSet转换为JSON并避免异常。
3013

被折叠的 条评论
为什么被折叠?



