在 sql 数据库中插入数据而不在 asp.net 中回发

inserting data in sql database without postback in asp.net

当我尝试使用 AJAX 插入数据而不使用回发时,它没有插入。我在 ajaxinsert.aspx 页面中写了 AJAX,并且在相同的页面视图代码(即 ajaxinsert.aspx.cs)中写了一个 web 方法。有什么问题?

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ajaxinsert.aspx.cs" Inherits="ajaxweb.ajaxinsert" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <script type="text/javascript" src="//code.jquery.com/jquery-1.10.2.min.js"></script>
    <script type="text/javascript" >
        $(document).ready(function () {
            $("#insert").click(function (e) {
                e.preventDefault()
                var Name = $("#name1").val();
                $.ajax({
                    type: "post",
                    dataType: "json",
                    url: "Contact.aspx/savedata",
                    contentType: "application/json; charset=utf-8",
                    data: { studentname: Name },
                    success: function () {
                        $("#divreslut").text("isnerted data");
                    },
                    error: function () {
                        alert("not inseted");
                    }
                });
            });
        });
    </script>
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            <input type="text" id="name1" name="name1" />
            <input type="submit" id="insert" value="isnertdata" />
        </div>
    </form>
    <div id="divreslut"></div>
</body>
</html>
[WebMethod]
public static void savedata(string studentname)
{
    using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["SqlConnection"].ConnectionString))
    {
        using (SqlCommand cmd = new SqlCommand("sp_savedata", con))
        {
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.AddWithValue("@name", studentname);

            //if (con.State == ConnectionState.Closed)
            //{
            con.Open();

            Int32 retVal = cmd.ExecuteNonQuery();
            if (retVal > 0)
            {
                Console.WriteLine("inserted sucess");
            }
            //if (retVal > 0)
            //{
            //    status = true;
            //}
            //else
            //{
            //    status = false;
            //}
            //return status;
        }
    }

请修改您上面.aspx页面代码中的下面一行

data: { studentname: Name },

data: JSON.stringify({studentname: Name }), 

Javascript代码

 <script type="text/javascript" >
        $(document).ready(function () {
            $("#insert").click(function (e) {
                e.preventDefault();
                var Name = $("#name1").val();
                $.ajax({
                    type: "post",
                    dataType: "json",
                    url: "Contact.aspx/savedata",
                    contentType: "application/json; charset=utf-8",
                    data: JSON.stringify({studentname: Name }),
                    success: function () {
                        $("#divreslut").text("isnerted data");
                    },
                    error: function () {
                        alert("not inseted");
                    }
                });
            });
        });
    </script>
Add jQuery Library:

    First we have to add jQuery library. You can download jQuery library here, or you can use following jQuery CDN.

在 ASP.NET 中使用 jQuery ajax 将数据保存到数据库而不回传 - 查看更多信息:http://www.dotnetfox.com/articles/save-data-to-database-without-postback-using-jquery-ajax-in-Asp-Net-1108.aspx#sthash.7lXf0io7.dpuf 请找到以下 link:-

http://www.dotnetfox.com/articles/save-data-to-database-without-postback-using-jquery-ajax-in-Asp-Net-1108.aspx

迪帕克答对了一半。您需要将 processData: false, 添加到 ajax 参数。正确的 javascript 是:

$(document).ready(function () {
    $("#insert").click(function (e) {
        e.preventDefault()
        var Name = $("#name1").val();
        $.ajax({
            type: "post",
            dataType: "json",
            url: "Contact.aspx/savedata",
            contentType: "application/json; charset=utf-8",
            data: JSON.stringify({ studentname: Name }),
            processData: false,
            success: function () {
               $("#divreslut").text("inserted data");
            },
            error: function () {
               alert("not inserted");
           }
        });
    });
});

如果没有 processData: false,ajax 方法会尝试将数据转换为 URL 参数。

顺便说一句,调试 AJAX 帖子问题的最佳方法是使用浏览器中 F12 开发人员工具 UI 上的“网络”选项卡。使用该工具,您可以看到 JSON 数据正在转换为 studentname=Bob,这应该会引导您找到正确的解决方案。