Jquery访问WebService

本文介绍了使用jQuery通过Ajax调用WebService返回DataSet时遇到的JSON序列化异常问题。当尝试将DataSet转换为JSON格式时,系统抛出循环引用错误。为解决此问题,可以在web.config中添加特定的转换器配置,并引入Microsoft.Web.Preview.dll。通过这些步骤,可以成功将DataSet转换为JSON并避免异常。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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了  

 

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值