郑德才博客 记录学习,记录工作,学习知识分享!

Jquery读取WebService、WebService返回DataSet常见问题

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中配置如下代码:


















记的上面要导入Microsoft.Web.Preview.dll 这个Dll 才能正常使用、不然会报错误、大致如下:

找不到类型“Microsoft.Web.Preview.Script.Serialization.Converters.DataSetConverter, Microsoft.Web.Preview”。.......................


解决方法: 去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了
2012年11月21日 | 发布:郑德才博客 | 分类:网络文摘 | 评论:7

留言列表:

  • 奶茶店 发布于 2012/11/22 10:16:33  回复
  • 解决问题的方法有很多种。。。。
  • 奶茶店 发布于 2012/11/23 17:02:41  回复
  • 方法很实用的。
  • 顺丰 发布于 2012/11/23 19:32:37  回复
  • 很不错的文章,顶。。。
  • 即刻折 发布于 2012/12/8 17:49:26  回复
  • 不知道有没有针对WebService的统计器。
    有的话这样就会方便很多。
  • 李石坚 发布于 2012/12/10 6:27:17  回复
  • 很喜欢博主写的文章,博客也设计得很好看。顶一个!
  • 最真博客 发布于 2012/12/18 18:16:36  回复
  • 好漂亮的博客啊,真不错。。。
  • 防护网配件 发布于 2013/1/5 11:08:54  回复
  • 看不懂

发表留言: