Javascript 对webmethod的Ajax调用出现错误500

Javascript 对webmethod的Ajax调用出现错误500,javascript,c#,jquery,asp.net,ajax,Javascript,C#,Jquery,Asp.net,Ajax,我是一个初学者,我想在另一个dropdownlist选择的索引发生变化时,使用ajax将一些数据从数据库加载到dropdownlist 但我只得到500个错误 我的jquery ajax代码 function ddlGroups() { var s = $("#Content_ddlGroups").find("option:selected").prop("value"); $.ajax({ method: "GET",

我是一个初学者,我想在另一个dropdownlist选择的索引发生变化时,使用ajax将一些数据从数据库加载到dropdownlist 但我只得到500个错误 我的jquery ajax代码

 function ddlGroups() {
        var s = $("#Content_ddlGroups").find("option:selected").prop("value");

        $.ajax({
            method: "GET",
            contentType: "application/json; charset=utf-8",
            //url is the path of our web method (Page name/function name)
            url: "../panels/admin/AddProject.aspx/getSubgroups",
            data: { Id: s },
            dataType: "json",
            //called on jquery ajax call success
            success: function (result) {
                $('#Content_SubGroups').empty();

                $.each(result.d, function (key, value) {
                    $("#Content_ddlGroups").append($("<option></option>").val(value.GroupID).html(value.Title));

                });

            },
            //called on jquery ajax call failure
            error: function ajaxError(result) {
                alert(result.status + ' : ' + result.statusText);
            }
        });
    };
函数组(){
var s=$(“#内容#组”).find(“选项:已选”).prop(“值”);
$.ajax({
方法:“获取”,
contentType:“应用程序/json;字符集=utf-8”,
//url是我们的web方法的路径(页面名/函数名)
url:“../panels/admin/AddProject.aspx/getSubgroups”,
数据:{Id:s},
数据类型:“json”,
//jQueryAjax调用成功时调用
成功:功能(结果){
$(“#内容_子组”).empty();
$.each(result.d、函数(键、值){
$(“#内容组”).append($(“”).val(value.GroupID.html(value.Title));
});
},
//jquery ajax调用失败时调用
错误:函数ajaxError(结果){
警报(result.status+':'+result.statusText);
}
});
};
还有我的c代码

[WebMethod]
[脚本方法(UseHttpGet=true)]
公共静态列表getSubgroups(字符串Id)
{
DataTable dt=新的DataTable();
List objDept=new List();
GroupsRepository jg=新的GroupsRepository();
//Page Page=(Page)HttpContext.Current.Handler;
//DropDownList DDLGroups=(DropDownList)page.FindControl(“DDLGroups”);
dt=jg.LoadSubGroup(Id.ToInt());
如果(dt.Rows.Count>0)
{
对于(int i=0;i

问题出在哪里???

jQuery不是这里的问题。500错误是由服务器抛出的,因此您应该查看c代码的日志,以了解其详细信息,并能够缩小原因。

在AJAX调用中,实际上是500错误导致的,因为您已经通过了 Id:s,而不是有一些数字的Id。身份证号码:5

如果您在服务器端方法中以id形式传递字符串,我会看到您的代码 您正试图将该字符串转换为int。这实际上会导致500错误

[WebMethod]
    [ScriptMethod(UseHttpGet = true)]
    public static List<Group> getSubgroups(string Id)
    {
        DataTable dt = new DataTable();
        List<Group> objDept = new List<Group>();
        GroupsRepository jg = new GroupsRepository();
        //Page page = (Page)HttpContext.Current.Handler;
        //DropDownList DDLGroups = (DropDownList)page.FindControl("DDLGroups");

        dt = jg.LoadSubGroup(Id.ToInt()); // Here You have convert string to Int that's why you got 500 Error.

        if (dt.Rows.Count > 0)
        {
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                objDept.Add(new Group
                {
                    GroupID = Convert.ToInt32(dt.Rows[i][0]),
                    Title = dt.Rows[i][1].ToString(),
                });
            }
        }
        return objDept;
    }
[WebMethod]
[脚本方法(UseHttpGet=true)]
公共静态列表getSubgroups(字符串Id)
{
DataTable dt=新的DataTable();
List objDept=new List();
GroupsRepository jg=新的GroupsRepository();
//Page Page=(Page)HttpContext.Current.Handler;
//DropDownList DDLGroups=(DropDownList)page.FindControl(“DDLGroups”);
dt=jg.LoadSubGroup(Id.ToInt());//这里有将字符串转换为Int的命令,这就是为什么会出现500个错误。
如果(dt.Rows.Count>0)
{
对于(int i=0;i
500表示引发了异常。您可以调试代码,或者至少添加一个
try-catch
。要添加到Camilo的注释中,错误发生在“getSubgroups”代码中,因此您需要在此处添加try-catch以查看实际错误。@Sparrow我如何才能看到错误?我在代码中添加了try-catch,但我不知道如何显示erorrWell…您可以在catch块中添加一些语句来记录(写入)异常消息和/或堆栈跟踪(通常应用程序有一个用于这些日志的文件或表)。您还可以在服务中设置断点并手动调试。您甚至可以使用Debug类(在System.Diagnostics命名空间中)查看哪一行引发异常以及异常是什么。如果您是初学者,我认为最简单的选项是使用Diagnostics,我得到了以下错误::无效的web服务调用,缺少参数“Id”Hi.Javad的值。使用Json.stringify。例如,data:JSON.stringify({Id:5})。这很有帮助。另一种方式是数据:“{'Id':'”+“s”+“}”
[WebMethod]
    [ScriptMethod(UseHttpGet = true)]
    public static List<Group> getSubgroups(string Id)
    {
        DataTable dt = new DataTable();
        List<Group> objDept = new List<Group>();
        GroupsRepository jg = new GroupsRepository();
        //Page page = (Page)HttpContext.Current.Handler;
        //DropDownList DDLGroups = (DropDownList)page.FindControl("DDLGroups");

        dt = jg.LoadSubGroup(Id.ToInt()); // Here You have convert string to Int that's why you got 500 Error.

        if (dt.Rows.Count > 0)
        {
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                objDept.Add(new Group
                {
                    GroupID = Convert.ToInt32(dt.Rows[i][0]),
                    Title = dt.Rows[i][1].ToString(),
                });
            }
        }
        return objDept;
    }