2017-11-23 15 views
-1

私は初心者です。別のドロップダウンリストが選択されたインデックスを変更したときにデータベースからデータをロードするためにajaxを使用します。 しかし、私は500のエラーだけを得ています。 My jquery ajaxコードWebMethodへの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); 
      } 
     }); 
    }; 

と私のC#のコード

[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()); 
     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; 
    } 

問題は何ですか?

+0

500は、例外がスローされたことを意味します。 *あなたのコードをデバッグするか、少なくとも 'try-catch'を追加することができます。 –

+0

Camiloのコメントに追加するには、「getSubgroups」コードでエラーが発生しているので、実際のエラーを表示するためにtry catchを追加する必要があります。 – Sparrow

+0

@Sparrowどのようにエラーを見ることができますか?私は自分のコードでtry catchを追加しましたが、私はerorrを表示する方法を知らない –

答えて

0

ここではjQueryは問題ではありません。サーバーによって500のエラーがスローされるため、C#コードのログを確認して詳細を調べ、原因を絞り込むことができます。

0

あなたのAJAXコールで実際に500エラーが発生しました。数字のあるIDの代わりに Id:sを渡しました。 Ex。 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; 
    } 
+0

私はこのエラーが発生しています::無効なWebサービス呼び出し、パラメータの値がありません: 'Id' –

+0

Hi.Javad。 Json.stringifyを使用します。例えば、データ:JSON.stringify({Id:5})。これは役に立ちます。他の方法はデータです: "{'Id': '" + "s" + "'}" –

関連する問題