2010-04-13 22 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()