我是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;
}
谢谢你的任何帮助,因为我花了相当多的时间试图绕过它。
答案 0 :(得分:0)
我认为你必须删除&#34;数据&#34;的外部引号。在jQuery调用中
data: {categoryId: $('#<%=ddlCategory.ClientID %> option:selected').val() },
否则,您提交一个字符串,而不是由名为categoryId的参数组成的预期请求,并将其视为从所选选项中提取的值