我的页面上有一个HTML画布。当我点击画布时,一个简单的点画。我将坐标传递给我的InsertIntoDB函数,将x和y坐标输入到MS SQL Server数据库中,但它没有发生。
但是,我可以将C#调用放入HTML元素并使其正常工作,只要我使用虚拟xCoord和yCoord数字并返回一些东西(不是空)。
我的代码实际上突然出现了成功!"警告,但是当我运行SQL查询时,没有INSERT。这是Default.aspx中的代码:
function insertIntoDB(x, y) {
try
{
$.ajax({
type: 'POST',
url: 'Default.aspx/InsertPoints',
data: "{'xCoord': '" + x + "', 'yCoord': '" + y + "'}",
// '{"xCoord": "' + x + '", "yCoord": "' + y + '"}',
success: function (data) {
alert("Success!");
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert("Fail: " + textStatus);
}
});
}
catch (e)
{
alert(e);
}
}
这是Default.aspx.cs中的C#代码:
[WebMethod]
public static void InsertPoints(int xCoord, int yCoord) {
string myConn = "Data Source=MYDATABASEINFO;Initial Catalog=DATABASENAME;Integrated Security=False;User ID=USERID;Password=MYPASSWORD";
SqlConnection myConnection = new SqlConnection(myConn);
try
{
myConnection.Open();
SqlCommand myCommand= new SqlCommand("INSERT INTO DRAW (xCoord, yCoord) " +
"Values (" + xCoord + ", " + yCoord + ");", myConnection);
myCommand.ExecuteNonQuery();
myConnection.Close();
}
catch(Exception e)
{
Console.WriteLine(e.ToString());
}
}
感谢您的帮助。
答案 0 :(得分:1)
您正在尝试将json数据发送到服务器,然后您必须声明其内容类型。
为内容类型添加jquery ajax选项。
function insertIntoDB(x, y) {
try
{
var data = {
"xCoord": x,
"yCoord": y
};
$.ajax({
type: 'POST',
url: 'Default.aspx/InsertPoints',
data: JSON.stringify(data),
contentType: 'application/json',
success: function (data) {
alert("Success!");
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert("Fail: " + textStatus);
}
});
}
catch (e)
{
alert(e);
}
}
答案 1 :(得分:0)
尝试创建旧学校Web服务(.asmx文件)而不是网页(.aspx文件)。
如果您创建WebApi端点,情况会更好。将网页用于Web服务
是不太好的做法答案 2 :(得分:0)
尝试更改:
data: "{'xCoord': '" + x + "', 'yCoord': '" + y + "'}",
为:
data: {'xCoord': x , 'yCoord': y },
并尝试添加数据类型:
dataType: "json",
contentType: 'application/json',