在 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:-
迪帕克答对了一半。您需要将 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,这应该会引导您找到正确的解决方案。
当我尝试使用 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:-
迪帕克答对了一半。您需要将 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,这应该会引导您找到正确的解决方案。