2010-04-13 23 views
1

将文本字段值添加到数据库我想插入文本字段值到数据库使用JavaScript jQuery AJAX调用C#服务器方法。问题在于AJAX调用成功运行,但C#没有更新数据库。可能是什么原因?请尽快回复。 ASP代码如下给予:想要使用jQuery AJAX AJAX AJAX

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="dbTest.aspx.cs" Inherits="dbTest" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml"> 

<head runat="server"> 
    <title></title> 
    <script src="jquery.js" type="text/javascript"></script> 
    <script src="json2.js" type="text/javascript"></script> 

    <script type="text/javascript"> 

     function SaveOnClick() { 
      $.ajax({ 
       type: "POST", 
       url: "dbTest.aspx/SaveData", 
       data: "{'CustomerName': '" + $('#txtCustomerName').val() + "', 'CustomerPhoneNumber': '" + $('#txtCustomerPhoneNumber').val() + "', 'ColorID': '" + $('#txtColorID').val() + "'}", 
       contentType: "application/json; charset=utf-8", 
       dataType: "json", 
       success: function(result, txtstatus) { 
        alert(txtstatus); 
       }, 
       error: function(result) { 
        alert("jQuery Error:" + result.statusText); 
       } 
      }); 
     } 

    </script> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 
    <asp:DropDownList ID="Customers" runat="server"> 
     </asp:DropDownList> 
    </div> 
    <div id="CustomerDetails"> 
    </div> 
    <table border="0"> 
<tr> 
<td align="right"><strong>Customer Name:</strong></td> 
<td align="left"> 
    <asp:TextBox id="txtCustomerName" maxlength="50" runat="server" /> 
</td> 
</tr> 
<tr> 
<td align="right"><strong>Customer Phone Number:</strong></td> 
<td align="left"> 
    <asp:TextBox id="txtCustomerPhoneNumber" runat="server" /> 
</td> 
</tr> 
<tr> 
<td align="right"><strong>Color ID:</strong></td> 
<td align="left"> 
    <asp:TextBox id="txtColorId" runat="server" /> 
</td> 
</tr> 
<tr> 
<td>&nbsp;</td> 
</tr> 
</table> 

<input type="button" onclick="SaveOnClick()" value="click me"/> 

<asp:Panel id="pnlConfirm" runat="server"> 
<h2>Thanks for submitting your information to us!</h2> 

</asp:Panel> 

    </form> 
</body> 
</html> 

下面是C#文件:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.Services; 
using System.Web.UI.WebControls; 
using System.Data.SqlClient; 


public partial class dbTest : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     pnlConfirm.Visible = false; 
    } 
    [WebMethod] 
    public static void SaveData(string CustomerName, string CustomerPhoneNumber, string ColorID) 
    { 
     string Server = "al2c06"; 
     string Username = "app_Testing"; 
     string Password = "jsjsdj"; 
     string Database = "AmbreenTest"; 

     string ConnectionString = "Data Source=" + Server + ";"; 
     ConnectionString += "User ID=" + Username + ";"; 
     ConnectionString += "Password=" + Password + ";"; 
     ConnectionString += "Initial Catalog=" + Database; 
     string query = "INSERT INTO Customer_Order(customerName, customerPhoneNumber, colorID)"; 
     query += "VALUES ("; 
     query += "'" + CustomerName+ "'"; 
     query += ","; 
     query += "'" + CustomerPhoneNumber + "'"; 
     query += ","; 
     query += "'" + ColorID+ "'"; 
     query += ")"; 

     using (SqlConnection conn = new SqlConnection(ConnectionString)) 
     { 
      using (SqlCommand cmd = new SqlCommand(query, conn)) 
      { 
       conn.Open(); 
      } 
     } 
     //lblSQL.Text = query; 
     //pnlConfirm.Visible = true; 
    } 
} 
+0

你需要更具体。什么不行?您的SaveData方法是否可以运行?它是否正确地连接到了您指向的URL?看起来你可能正在混合一个ASP .NET页面和一个Web服务。如果它正在运行,请附加一个调试器并标识代码行,它失败的位置以及是否引发异常。在此发布详情,我们将很乐意提供帮助。 – driis 2010-04-13 17:38:46

+0

感谢您的回复。我的savedata得到运行。因为ajax调用成功处理程序中的警报框正在显示。但是当我检查管理员工作室中的数据时,它不会更新。表没有这些值。这就是问题。 – amby 2010-04-13 17:52:55

+0

可能是问题与我的查询 – amby 2010-04-13 17:56:43

回答

-1

你没有得到公布值。那就是问题所在。

[WebMethod] 
    public static void SaveData(string CustomerName, string CustomerPhoneNumber, string ColorID) 
    { 
     string Server = "al2c06"; 
     string Username = "app_AmbreenTesting"; 
     string Password = "testing"; 
     string Database = "AmbreenTesting"; 

     string ConnectionString = "Data Source=" + Server + ";"; 
     ConnectionString += "User ID=" + Username + ";"; 
     ConnectionString += "Password=" + Password + ";"; 
     ConnectionString += "Initial Catalog=" + Database; 
     string query = "INSERT INTO Customer_Order(customerName, customerPhoneNumber, colorID)"; 
     query += "VALUES ("; 
     query += "'" + Request.Form["CustomerName"].ToString()+ "'"; 
     query += ","; 
     query += "'" + Request.Form["CustomerPhoneNumber"].ToString() + "'"; 
     query += ","; 
     query += "'" + Request.Form["ColorID"].ToString()+ "'"; 
     query += ")"; 

     using (SqlConnection conn = new SqlConnection(ConnectionString)) 
     { 
      using (SqlCommand cmd = new SqlCommand(query, conn)) 
      { 
       conn.Open(); 
       cmd.ExecuteNonQuery(); 
      } 
     } 
     //lblSQL.Text = query; 
     //pnlConfirm.Visible = true; 
    } 

HTH

+0

张贴的值是他的方法的参数,但正如我评论,我不知道它是如何挂钩运行,如果它是。 无论如何,这段代码会失败,因为你处于一个静态的上下文中,所以你不能访问'请求'。 – driis 2010-04-13 17:43:45

+0

哦,你是对的...我通常有一个网络方法,并从Request.Form获取信息。顺便说一下错误是什么? – Raja 2010-04-13 17:47:20

+0

我试过ur方法,并使我的web方法非静态使用Request.Form,但然后发生jquery错误 – amby 2010-04-13 18:07:03

-1

我想你需要的是:

using (SqlConnection conn = new SqlConnection(ConnectionString)) 
     { 
      using (SqlCommand cmd = new SqlCommand(query, conn)) 
      { 
       conn.Open(); 
       cmd.ExecuteNonQuery(); 
      } 
     } 
+0

这当然是错的。 – driis 2010-04-13 17:41:19

0

首先解决您的jQuery选择,它们是区分大小写的。将$('#txtColorID').val()更改为$('#txtColorId').val()