【问题标题】:How can i see datatable which is the return from a webservice method我如何查看从 web 服务方法返回的数据表
【发布时间】:2010-01-06 09:17:17
【问题描述】:

我正在尝试使用来自 Web 服务方法的数据表。当它是字符串数据时,我可以看到返回值。 这是我的代码,它返回一个警报 hatada : null

 $.ajax(
            {
                type: 'POST',
                url: 'http://localhost:40764/HastaTahlilUyariServisi.asmx/Hello',
                data: "{_sTcKimlikNo: '111111111111', _iKlinikKodu:121212, _bAy:12, _iYil:2009}",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function(ajaxCevap) {
                    alert('basarili: ' + ajaxCevap); //$('#dv').html(ajaxCevap.d);
                },
                error: function(xhr, status) {                   
                    alert("hatada:" + xhr.responseXML);
                },
                beforeSend: function() {
                    alert('gonderilecek');
                },
                afterSend: function() {
                    alert('gonderildi');
                },
                complete: function(xhr, status) {
                    if (status == 'success')
                        alert('success' + $.httpData(xhr));
                }
            }

这是我的网络服务方法:

  [WebMethod]
    public DataTable Hello(string _sTcKimlikNo, int _iKlinikKodu, byte _bAy, int _iYil)
    {
        DataTable dt = new DataTable();
        dt.Columns.Add("ad");
        DataRow rw = dt.NewRow();
        rw[0] = _sTcKimlikNo + " " + _iKlinikKodu + " " + _bAy + " " + _iYil;
        return dt;
    }

如何从 webservice 方法中查看数据表? 提前致谢。

【问题讨论】:

  • 您能否展示您的 Web 服务方法以及包含它的类?
  • 包含此方法的 Web 服务类是否标有 [ScriptService] 属性?
  • 是的,它包含 [System.Web.Script.Services.ScriptService]
  • 你得到hatada : null的原因是因为你使用了xhr.responseXML,它没有被定义,因为web服务使用JSON而不是XML。现在您需要找出调用失败的原因并进入error 回调。为此,请使用 FireBug 检查 AJAX 调用并查看服务器响应的确切内容(错误代码、响应文本)。

标签: asp.net jquery ajax web-services


【解决方案1】:

没有序列化问题,只需命名您的数据表即可解决问题。

public DataTable LineChrt() {
  string query = "select m.class,sum(m.plannedvisits)" + 
    "plannedvisits,sum(m.actualvisits) actualvisits from vw_MTD_TgtVsAct_Calls1 m " +
    "where 1=1 and m.class in ('A','B','C')  and m.month = 6 " +
    "group by m.class";
  string constr = System.Configuration
    .ConfigurationSettings.AppSettings["PocketDCR"];
  DataTable data = new DataTable();
  SqlDataAdapter LCData = new SqlDataAdapter(query,constr);
  LCData.Fill(data);
  data.TableName = "ChartData";
  return data;
}

【讨论】:

    【解决方案2】:

    由于序列化问题,我认为您不能从 Web 服务返回 DataTable。这篇 Microsoft 文章建议改为返回 DataSet:
    Problems using an XML Web service that returns a DataTable

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-06-28
      • 2011-03-01
      • 2014-01-17
      • 2010-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多