Ajax Call无法使用asp.net

时间:2016-08-17 07:01:23

标签: c# jquery asp.net sql-server ajax

Ajax Call无法正常工作。当我点击btnsubmit时,它首先显示alert hi然后“Record Save to Database”,但数据不保存到数据库。存储过程名称为“Ajax”。

如何解决错误?提前谢谢..

程序是:

create procedure Ajax
    @EmpID nvarchar(50),
    @EmpName nvarchar(50),
    @EmpAddress nvarchar(50)
as
begin
    insert into NewEmp (EmpID, EmpName, EmpAddress) 
    values (@EmpID, @EmpName, @EmpAddress)
end

HTMl页面:

 <script type="text/javascript">
  $(document).ready(function () {
   $("#btnsubmit").click(function () {
    var EmpID = $('#TxtID').val();
    var EmpName = $('#TxtName').val();
    var EmpAddress = $('#TxtAdd').val();
    $.ajax({
     type: "POST",
     contentType: "application/json; charset=utf-8",
     url: "Default11.aspx/InserData",
     data: "{'EmpID':'" +EmpID + "','EmpName':'" + EmpName + "','EmpAddress':'" + EmpAddress + "'}",
     dataType: "json",
     success: function (response) {
       alert("Hi");                     
       $("#TxtID").val(''); $("#TxtName").val(''); $("#TxtAdd").val('');
       alert("Record Save to Databse");           
      },
      error: function () {
       alert("Error");
      }
     });
    });
   });
  </script>
 <div>

<asp:TextBox ID="TxtID" runat="server" ></asp:TextBox>
 <br />
 EmpName:-<asp:TextBox ID="TxtName" runat="server"></asp:TextBox>
 <br />
 Addresss:-<asp:TextBox ID="TxtAdd" runat="server"></asp:TextBox>
 <br />
 <input type="button" id="btnsubmit" value="Submit" />  
 </div>

C#代码: -

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Web.Services;

public partial class Default11 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
    }

    [System.Web.Services.WebMethod]
    public static bool InserData(string EmpID, string EmpName, string EmpAddress)
    {
        SqlConnection scon = new SqlConnection(ConfigurationManager.ConnectionStrings["AjaxInsert"].ConnectionString);
        try {
            SqlCommand cmd = new SqlCommand("Ajax",scon);
            scon.Open();
            cmd.CommandType=CommandType.StoredProcedure;
            cmd.CommandText = "Ajax";
            cmd.Parameters.AddWithValue("@EmpID", EmpID);
            cmd.Parameters.AddWithValue("@EmpName", EmpName);
            cmd.Parameters.AddWithValue("@EmpAddress", EmpAddress);

            cmd.Connection = scon;
            cmd.ExecuteNonQuery();

            scon.Close();

            // return "success";
        }
        catch(Exception ex)
        {
           // return"error";
        }

        return true;
    }
}

3 个答案:

答案 0 :(得分:0)

您是否通过断点检查了以下命令的字符串。

 "{'EmpID':'" +EmpID + "','EmpName':'" + EmpName + "','EmpAddress':'" + EmpAddress + "'}"

返回服务器?

为什么不data: { EmpID: EmpID , EmpName: EmpName , EmpAddress: EmpAddress }

答案 1 :(得分:0)

你不能在java scritpt中使用asp控件.becase asp控件可以在外面访问,即服务器端.insted服务器控件使用html控件,如下所示         的EmpID: -         
        EmpName: -         
        编辑部地址: -         

答案 2 :(得分:0)

您使用asp control来获取用户的输入值。所以在jQuery代码中进行更改,如下所示。因为我也面临同样的问题。所以我希望它会对你有所帮助。

<script type="text/javascript">  

$(document).ready(function () {
   $("#btnsubmit").click(function () {
    var EmpID = $('#<%=TxtID.ClientID%>').val();
    var EmpName = $('#<%=TxtName.ClientID%>').val();
    var EmpAddress = $('#<%=TxtAdd.ClientID%>').val();
    $.ajax({
     type: "POST",
     contentType: "application/json; charset=utf-8",
     url: "Default11.aspx/InserData",
     data: "{'EmpID':'" +EmpID + "','EmpName':'" + EmpName + "','EmpAddress':'" + EmpAddress + "'}",
     dataType: "json",
     success: function (response) {
       alert("Hi");                     
       $('#<%=TxtID.ClientID%>').val('');
       $('#<%=TxtName.ClientID%>').val('');
       $('#<%=TxtAdd.ClientID%>').val('');
       alert("Record Save to Database");           
      },
      error: function () {
       alert("Error");
      }
     });
    });
   });
  </script>