2013-10-30 40 views
0

我有一个.aspx页面,我希望我的WebMethod返回一个List,以便我可以从jQuery ajax调用它并获取JSON类型的响应...这是我的代码,但它只是返回一个空白页?Web方法不返回列表?

任何帮助将是巨大的

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Web.Services; 
using System.Data.SqlClient; 
using System.Configuration; 
using System.Data; 
using System.Web.Services.Protocols; 
using System.Web.Script.Services; 

namespace Test.webservices.mainGrid 
{ 
    public partial class staffTreeView : System.Web.UI.Page 
    { 

     [WebMethod()] 
     public static List<Staff> GetStaff() 
     { 
      try 
      { 
       List<Staff> staff = new List<Staff>(); 
       // HttpCookie _userinfo = HttpContext.Current.Request.Cookies["userinfo"]; 
       string connectionstring = ConfigurationManager.ConnectionStrings["TestProduction"].ConnectionString; 
       SqlConnection connection = new SqlConnection(connectionstring); 

       string sql = "sd_STAFFTREEVIEW"; 
       SqlCommand command = new SqlCommand(sql, connection); 

       command.CommandType = CommandType.StoredProcedure; 

       SqlDataReader dr = command.ExecuteReader(); 

       while (dr.Read()) 
       { 
        staff.Add(new Staff() 
        { 
         id = dr.GetString(dr.GetOrdinal("id")), 
         NAME = dr.GetString(dr.GetOrdinal("NAME")), 
         PARENT = dr.GetString(dr.GetOrdinal("PARENT")), 
         VALUE = dr.GetString(dr.GetOrdinal("VALUE")), 
         VALUETYPE = dr.GetString(dr.GetOrdinal("VALUETYPE")) 
        }); 
       } 
       dr.Close(); 
       return staff; 
      } 
      catch (Exception ex) 
      { 
       throw new System.Exception("No Data Returned:" + ex.Message); 
      } 

     } 

     public class Staff 
     { 
      public string id { get; set; } 
      public string NAME { get; set; } 
      public string PARENT { get; set; } 
      public string VALUE { get; set; } 
      public string VALUETYPE { get; set; } 
     } 
    } 

}

+0

你有没有核实员工人数不是零?你看看浏览器调试器(firebug)中的JSON返回值来验证JSON结果是否为空以确保这不是显示/解析问题? –

+0

在附注中,您应该关闭连接,或将其置于“使用”块中。 – Smeegs

回答

0

我会尝试改变的返回类型为字符串,并返回对象的序列化JSON字符串。

像这样

JavaScriptSerializer js = new JavaScriptSerializer(); 
string strJSON = js.Serialize(staff); 
return strJSON; 
0

创建一个WCF服务,而不是一个页面! 并考虑返回一个Array而不是通用列表Staff []

0

很少有事情要检查。

  1. 你需要启用会话:您是否使用了正确的方法名(拼写检查)

  2. :Services.WebMethod(=真EnableSession)。更好的是,你可以发布Ajax调用代码吗?

  3. 如果你从其他地方像代码背后调用web方法,它会给你正确的结果吗?

0

我怀疑你的Ajax调用没有发生。

如果您确定您的列表不是空的,请确保您已将ajax请求的dataType和contentType分别设置为json和“application/json”。

如果您使用的是脚本管理器控件,请确保Enablepagemethods设置为true。

终于可以尝试设置你的错误回调一个破发点,以寻找是否有任何系列化errors.if所以,你可以尝试使用JavaScriptSerializer到列表中序列化到JSON并返回结果为字符串