从ajax返回实体对象列表

时间:2013-11-29 13:23:18

标签: ajax entity-framework jquery asp.net-ajax

我是ajax的新手,我试图通过ajax返回一个实体对象列表。当我用字符串执行此操作时,它可以成功运行。

我的ajax代码:

$.ajax({
    type: "POST",
    url: "/MemberPages/AdminPages/AddProduct.aspx/GetList",
    data: '{"categoryId":' + $('#<%=ddlCategory.ClientID %> option:selected').val() +  '}',
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function (msg) {
        var cats = msg.d;
         $.each(cats, function (index, cat) {
             alert(cat);
         });
    },
    error: function (XMLHttpRequest, textStatus, errorThrown) {
         alert("Status: " + textStatus); alert("Error: " + errorThrown);
    }
});

我的代码返回一个字符串:

[WebMethod]
public static List<String> GetList(int categoryId)
{
        List<String> catlist = new List<String>();
        IQueryable<SubCategory> clist = new ProductsBL().GetSubCategories(categoryId);

        foreach (SubCategory c in clist)
        {
            catlist.Add(c.Name.ToString());
        }

        return catlist;
 }

我的代码产生500内部服务器错误

 [WebMethod]
 [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
 public static List<SubCategory> GetList(int categoryId)
 {
        List<SubCategory> catlist = new List<SubCategory>();
        IQueryable<SubCategory> clist = new ProductsBL().GetSubCategories(categoryId);

        foreach (SubCategory c in clist)
        {
            catlist.Add(c);
        }

        return catlist;
 }

谢谢你的任何帮助,因为我花了相当多的时间试图绕过它。

1 个答案:

答案 0 :(得分:0)

我认为你必须删除&#34;数据&#34;的外部引号。在jQuery调用中

data: {categoryId: $('#<%=ddlCategory.ClientID %> option:selected').val() },

否则,您提交一个字符串,而不是由名为categoryId的参数组成的预期请求,并将其视为从所选选项中提取的值