在Asp.net C#[数据库MySQL]中使用jQuery Ajax插入数据
我需要在Asp.net C#中使用jQuery Ajax在MySql数据库中插入新记录 我在使用WebService方法时尝试过本教程: 我没有错误,但没有插入数据 我尝试过插入简单查询sql,但没有成功 你能帮我吗 先谢谢你 我的代码简化如下 WebService.cs在Asp.net C#[数据库MySQL]中使用jQuery Ajax插入数据,c#,jquery,mysql,asp.net,ajax,C#,Jquery,Mysql,Asp.net,Ajax,我需要在Asp.net C#中使用jQuery Ajax在MySql数据库中插入新记录 我在使用WebService方法时尝试过本教程: 我没有错误,但没有插入数据 我尝试过插入简单查询sql,但没有成功 你能帮我吗 先谢谢你 我的代码简化如下 WebService.cs using System; using System.Configuration; using System.Data.Odbc; using System.Web; using System.Web.Services;
using System;
using System.Configuration;
using System.Data.Odbc;
using System.Web;
using System.Web.Services;
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class WebService : System.Web.Services.WebService
{
public WebService()
{
}
public class userDetails
{
public string firstName;
}
[WebMethod]
public void AddRecord(userDetails userDetails)
{
//SIMPLE SQL QUERY INSERT INTO
string query = String.Format(" INSERT INTO doTable ");
query += String.Format(" (name) ");
query += String.Format(" VALUES ('foo'); ");
using (OdbcConnection conn =
new OdbcConnection(ConfigurationManager.ConnectionStrings["ConnMySQL"].ConnectionString))
{
using (OdbcCommand cmd =
new OdbcCommand(query, conn))
{
try
{
cmd.Connection.Open();
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
throw new ApplicationException("operation failed!", ex);
}
finally
{
cmd.Connection.Close();
}
}
}
}
}
HMTL页面:
<script src="3.2.1/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function () {
$("#activatedLink").on('click', function (e) {
e.preventDefault();
var userDetails = {};
userDetails.firstName = $("#randomdirectory").val();
var jsonData = JSON.stringify({
userDetails: userDetails
});
$.ajax({
type: "POST",
url: "WebService.asmx/AddRecord",
data: jsonData,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: OnSuccess,
error: OnErrorCall
});
function OnSuccess(response) {
var result = response.d;
if (result == "success") {
$("#msg").html("New record addded successfully :)").css("color", "green");
}
$("#randomdirectory").val("");
}
function OnErrorCall(response) {
$("#msg").html("Error occurs :(").css("color", "red");
}
});
});
</script>
<form id="form1">
<div id="Tree">
<input type="hidden" id="randomdirectory" name="randomdirectory" value="CEF">
<a id="activatedLink" data-id="CEF"
href="javascript:document.getElementById('loading').style.visibility = 'visible';
location.href='http://...';" target="_top">
<span>CEF</span></a>
</div>
</form>
$(文档).ready(函数(){
$(“#activatedLink”)。在('click',函数(e){
e、 预防默认值();
var userDetails={};
userDetails.firstName=$(“#随机目录”).val();
var jsonData=JSON.stringify({
userDetails:userDetails
});
$.ajax({
类型:“POST”,
url:“WebService.asmx/AddRecord”,
资料来源:jsonData,
contentType:“应用程序/json;字符集=utf-8”,
数据类型:“json”,
成功:一旦成功,
错误:OnErrorCall
});
函数OnSuccess(响应){
var结果=响应d;
如果(结果=“成功”){
$(“#msg”).html(“新记录添加成功:)”).css(“颜色”、“绿色”);
}
$(“#随机目录”).val(“”);
}
函数调用(响应){
$(“#msg”).html(“出现错误:”).css(“颜色”、“红色”);
}
});
});
您需要知道REST服务和SOAP服务之间的区别。NET asmx web服务是一种SOAP服务,这就是为什么使用字符串化json的普通ajax post无法工作的原因。SOAP请求规范写在您在这里创建的页面中 例如,如果您想要请求该服务,您需要创建您的身体,如:
var data = '<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
<soap12:Body>
<CelsiusToFahrenheit xmlns="https://www.w3schools.com/xml/">
<Celsius>{Your Value}</Celsius>
</CelsiusToFahrenheit>
</soap12:Body>
</soap12:Envelope>';
之后,您可以成功地进行SOAP请求。您还可以在aspx页面的后端创建一个静态web方法,并可以调用后端方法和插入数据
you can also create a static web method at back end of aspx page and can call back end method and insert data
use below code :
write web method at back end in aspx.cs file:
[WebMethod]
public static void AddRecord(userDetails userDetails)
{
//SIMPLE SQL QUERY INSERT INTO
string query = String.Format(" INSERT INTO doTable ");
query += String.Format(" (name) ");
query += String.Format(" VALUES ('foo'); ");
using (OdbcConnection conn =
new OdbcConnection(ConfigurationManager.ConnectionStrings["ConnMySQL"].ConnectionString))
{
using (OdbcCommand cmd =
new OdbcCommand(query, conn))
{
try
{
cmd.Connection.Open();
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
throw new ApplicationException("operation failed!", ex);
}
finally
{
cmd.Connection.Close();
}
}
}
}
<script src="3.2.1/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function () {
$("#activatedLink").on('click', function (e) {
e.preventDefault();
var userDetails = {};
userDetails.firstName = $("#randomdirectory").val();
var jsonData = JSON.stringify({
userDetails: userDetails
});
$.ajax({
type: "POST",
url: "pagename.aspx/AddRecord", //here specify the name of our page where the method is present
data: jsonData,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: OnSuccess,
error: OnErrorCall
});
function OnSuccess(response) {
var result = response.d;
if (result == "success") {
$("#msg").html("New record addded successfully :)").css("color", "green");
}
$("#randomdirectory").val("");
}
function OnErrorCall(response) {
$("#msg").html("Error occurs :(").css("color", "red");
}
});
});
</script>
<form id="form1">
<div id="Tree">
<input type="hidden" id="randomdirectory" name="randomdirectory" value="CEF">
<a id="activatedLink" data-id="CEF"
href="javascript:document.getElementById('loading').style.visibility = 'visible';
location.href='http://...';" target="_top">
<span>CEF</span></a>
</div>
</form>
使用以下代码:
在aspx.cs文件的后端写入web方法:
[网络方法]
公共静态void AddRecord(userDetails userDetails)
{
//简单SQL查询插入到
字符串查询=string.Format(“插入到doTable”);
query+=String.Format(“(名称)”);
query+=String.Format(“值('foo');”);
使用(ODBC连接连接)=
新的OdbcConnection(ConfigurationManager.ConnectionString[“ConnMySQL”].ConnectionString))
{
使用(odbccmd)命令=
新的OdbcCommand(查询,连接))
{
尝试
{
cmd.Connection.Open();
cmd.ExecuteNonQuery();
}
捕获(例外情况除外)
{
抛出新的ApplicationException(“操作失败!”,ex);
}
最后
{
cmd.Connection.Close();
}
}
}
}
$(文档).ready(函数(){
$(“#activatedLink”)。在('click',函数(e){
e、 预防默认值();
var userDetails={};
userDetails.firstName=$(“#随机目录”).val();
var jsonData=JSON.stringify({
userDetails:userDetails
});
$.ajax({
类型:“POST”,
url:“pagename.aspx/AddRecord”//此处指定方法所在页面的名称
资料来源:jsonData,
contentType:“应用程序/json;字符集=utf-8”,
数据类型:“json”,
成功:一旦成功,
错误:OnErrorCall
});
函数OnSuccess(响应){
var结果=响应d;
如果(结果=“成功”){
$(“#msg”).html(“新记录添加成功:)”).css(“颜色”、“绿色”);
}
$(“#随机目录”).val(“”);
}
函数调用(响应){
$(“#msg”).html(“出现错误:”).css(“颜色”、“红色”);
}
});
});
你调试过那个程序吗?@Imranbutt,谢谢你的回复;如果尝试webservice.asmx,我有:解析器错误描述:在解析为该请求提供服务所需的资源时出错。请查看以下特定的解析错误详细信息,并适当修改源文件。分析器错误消息:无法创建类型“WebService”。请参阅此链接
you can also create a static web method at back end of aspx page and can call back end method and insert data
use below code :
write web method at back end in aspx.cs file:
[WebMethod]
public static void AddRecord(userDetails userDetails)
{
//SIMPLE SQL QUERY INSERT INTO
string query = String.Format(" INSERT INTO doTable ");
query += String.Format(" (name) ");
query += String.Format(" VALUES ('foo'); ");
using (OdbcConnection conn =
new OdbcConnection(ConfigurationManager.ConnectionStrings["ConnMySQL"].ConnectionString))
{
using (OdbcCommand cmd =
new OdbcCommand(query, conn))
{
try
{
cmd.Connection.Open();
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
throw new ApplicationException("operation failed!", ex);
}
finally
{
cmd.Connection.Close();
}
}
}
}
<script src="3.2.1/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function () {
$("#activatedLink").on('click', function (e) {
e.preventDefault();
var userDetails = {};
userDetails.firstName = $("#randomdirectory").val();
var jsonData = JSON.stringify({
userDetails: userDetails
});
$.ajax({
type: "POST",
url: "pagename.aspx/AddRecord", //here specify the name of our page where the method is present
data: jsonData,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: OnSuccess,
error: OnErrorCall
});
function OnSuccess(response) {
var result = response.d;
if (result == "success") {
$("#msg").html("New record addded successfully :)").css("color", "green");
}
$("#randomdirectory").val("");
}
function OnErrorCall(response) {
$("#msg").html("Error occurs :(").css("color", "red");
}
});
});
</script>
<form id="form1">
<div id="Tree">
<input type="hidden" id="randomdirectory" name="randomdirectory" value="CEF">
<a id="activatedLink" data-id="CEF"
href="javascript:document.getElementById('loading').style.visibility = 'visible';
location.href='http://...';" target="_top">
<span>CEF</span></a>
</div>
</form>