如果在超链接上触发JavaScript onclick事件,如何在C#和Web窗体中插入数据库记录(MySQL)?
我的代码下面我没有错误,但没有插入记录。
在HTML视图中,值为:
a onclick =“(<%=(rds.fields(”foo“)。Value)%>)”href =“....
是正确的:
<a onclick="DataPrinted(CEF)" href=".... >
提前感谢您的帮助。
Javascript和Web表单代码
<script type="text/javascript">
function DataPrinted(IDNumber) {
xmlhttp = new XMLHttpRequest();
xmlhttp.open("POST", "UpdateDataPrintStatus.aspx", true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.send("ID=" + IDNumber);
}
</script>
<a onclick="DataPrinted(<%=(rds.fields("foo").Value)%>)"
href="javascript:document.getElementById('loading').style.visibility = 'visible';
location.href='<%=rds.fields("link")%>';" target="_top" >
<%=rds.fields("foo")%>
<span>Test</span></a>
UpdateDataPrintStatus.aspx.cs
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
string IDNumber = Request.Form["ID"].ToString();
string query = String.Format(" INSERT INTO (IDNumber) ");
query += String.Format(" VALUES ( ? ); ");
using (OdbcConnection conn =
new OdbcConnection(ConfigurationManager.ConnectionStrings["ConnMySQL"].ConnectionString))
{
using (OdbcCommand cmd =
new OdbcCommand(query, conn))
{
try
{
cmd.Connection.Open();
cmd.Parameters.AddWithValue("param1", IDNumber.ToString().ToUpper());
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
throw new ApplicationException("operation failed!", ex);
}
finally
{
cmd.Connection.Close();
}
}
}
}
}
}
编辑#01
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script type="text/javascript">
$('name').click(function () {
var book_id = $(this).parent().data('id');
$.ajax
({
url: 'UpdateDataPrintStatus.aspx',
data: { "ID": book_id },
type: 'post',
success: function (result) {
$('.modal-box').text(result).fadeIn(700, function () {
setTimeout(function () {
$('.modal-box').fadeOut();
}, 2000);
});
}
});
});
</script>
<a id="name" data-id="<%=rds.fields.Item("foo").Value%>"
href="javascript:document.getElementById('loading').style.visibility = 'visible';
location.href='<%=rds.fields("link")%>';" target="_top">
<%=rds.fields("link")%>
<span>test</span>
</a>
UpdateDataPrintStatus.aspx.cs
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
string IDNumber = Request.Form["ID"].ToString();
string query = String.Format(" INSERT INTO tbl ");
query += String.Format(" (name) VALUES (?); ");
using (OdbcConnection conn =
new OdbcConnection(ConfigurationManager.ConnectionStrings["ConnMySQL"].ConnectionString))
{
using (OdbcCommand cmd =
new OdbcCommand(query, conn))
{
try
{
cmd.Connection.Open();
cmd.Parameters.AddWithValue("param1", IDNumber.ToString().ToUpper());
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
throw new ApplicationException("operation failed!", ex);
}
finally
{
cmd.Connection.Close();
}
}
}
}
}