繁体   English   中英

Ajax Call无法使用asp.net

[英]Ajax Call not working with asp.net

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;
    }
}

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

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

返回服务器?

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

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

您使用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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM