2016-11-17 14 views
0

asp.netの通常のWebフォームでjquery ajaxを使用する方法を学び始めました。しかし、私は立ち往生しています。私は正確に何が問題なのか分かりません。 フォーム上のボタンをクリックすると、最初には機能しませんが、2回目にクリックしたときにのみ機能することがあります。 その後、動作を停止します(成功関数に警告メッセージは表示されません)。プロジェクトを再構築しても機能しません。コンソールにもエラーは表示されません。私を助けてください。以下はJQuery Ajax関数呼び出しの問題

は私のコード 従業員クラス

public class Employee 
    { 
     public int Id { get; set; } 
     public string Name { get; set; } 
     public string Gender { get; set; } 
     public string Country { get; set; } 
     public int Salary { get; set; } 
     public int DeptId { get; set; } 
    } 

部門クラス

public class Department 
    { 
     public int DeptId { get; set; } 
     public string Name { get; set; } 
    } 

ファイル

の背後にあるコードでTest.aspxというコード

<!DOCTYPE html> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js" type="text/javascript"></script> 
<script type = "text/javascript"> 
    $(document).ready(function() { 
     $('#Button1').click(function() { 
      var Name = $("#txtName").val(); 
      var Gender = $("#ddlGender").val(); 
      var Country = $("#txtCountry").val(); 
      var Salary = $("#txtSalary").val(); 
      var DeptId = $("#ddlDept").val(); 
      var employee = { 
       "Name": Name, 
       "Gender": Gender, 
       "Country": Country, 
       "Salary": Salary, 
       "DeptId": DeptId 
      } 
      $.ajax({ 
       context: this, 
       type: "POST", 
       url: "test.aspx/GetResultFromDB", 
       data: JSON.stringify({ employee: employee }), 
       contentType: "application/json; charset=utf-8", 
       dataType: "json", 
       cache:false, 
       success: OnSuccess, 
       failure: function (response) { 
        alert("In Error"); 
        alert(response.d); 
       } 
      }); 
     }); 
     function OnSuccess(response) { 
      alert("In succcess"); 
      alert(response.d); 
      console.log(response.d); 
     } 
    }); 
</script> 
</head> 
<body> 
    <form id="form1" runat="server"> 
     <div> 
      <div> 
       <table> 
      <tr> 
       <td>Name</td> 
       <td><asp:TextBox ID="txtName" runat="server"></asp:TextBox></td> 
      </tr> 
      <tr> 
       <td>Country</td> 
       <td><asp:TextBox ID="txtCountry" runat="server"></asp:TextBox></td> 
      </tr> 
      <tr> 
       <td>Gender</td> 
       <td><asp:DropDownList ID="ddlGender" runat="server"> 
        <asp:ListItem Text="Select" Value="0"></asp:ListItem> 
        <asp:ListItem Text="Male" Value="Male"></asp:ListItem> 
        <asp:ListItem Text="Female" Value="Female"></asp:ListItem> 
        </asp:DropDownList></td> 
      </tr> 
      <tr> 
       <td>Salary</td> 
       <td> 
        <asp:TextBox ID="txtSalary" runat="server"></asp:TextBox></td> 
      </tr> 
      <tr> 
       <td>Department</td> 
       <td><asp:DropDownList ID="ddlDept" runat="server"></asp:DropDownList></td> 
      </tr> 
      <tr> 
       <td colspan="2"> 
        <asp:Button ID="Button1" runat="server" Text="Button"/> 
       </td> 
      </tr> 
     </table> 
      </div> 
     </div> 
    </form> 
</body> 
</html> 

コードです

[System.Web.Services.WebMethod] 
    public static string GetResultFromDB(Employee employee) 
    { 
     SqlConnection con = EmpDeptDataLayer.GetDBConnection(); 
     SqlCommand cmd = new SqlCommand("spAddEmployee", con); 
     cmd.CommandType = CommandType.StoredProcedure; 
     cmd.Parameters.Add(new SqlParameter("@Name", employee.Name)); 
     cmd.Parameters.Add(new SqlParameter("@Country", employee.Country)); 
     cmd.Parameters.Add(new SqlParameter("@Gender", employee.Gender)); 
     cmd.Parameters.Add(new SqlParameter("@Salary", employee.Salary)); 
     cmd.Parameters.Add(new SqlParameter("@DeptId", employee.DeptId)); 
     cmd.Parameters.Add(new SqlParameter("@Result", SqlDbType.VarChar, 50)).Direction = ParameterDirection.Output; 
     con.Open(); 
     int count = cmd.ExecuteNonQuery(); 
     con.Close(); 
     string Result = ""; 
     if (count > 0) 
     { 
      Result = cmd.Parameters["@Result"].Value.ToString(); 
     } 
     else 
     { 
      Result = "Error!! Something went wrong"; 
     } 
     return Result.ToString(); 
    } 

私が間違っている場所を教えてください。 本当にありがとうございます。

答えて

0

コードは問題なく、私のために働いています。

あなたApp_Startフォルダで

、あなたのRouteConfig内....

はコメントアウトし、次の行をするか、RedirectModeです変更:

//settings.AutoRedirectMode = RedirectMode.Permanent。

+0

ありがとうございました。しかし、私はRoute.Configファイルにこのような行はありません。私も空のプロジェクトを作成し、それを試みたが、まだ動作していない – Videl

関連する問題