为什么我的C#函数不是从ajax Javascript代码执行的?

时间:2015-02-06 23:07:23

标签: javascript c# jquery asp.net ajax

我的页面上有一个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());
        }
    }

感谢您的帮助。

3 个答案:

答案 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',