簡體   English   中英

為什么我的C#函數沒有從Ajax Javascript代碼執行?

[英]Why isn't my C# function executing from ajax Javascript code?

我的頁面上有一個HTML畫布。 當我單擊畫布時,將繪制一個簡單的點。 我將坐標傳遞到我的InsertIntoDB函數中,以將x和y坐標輸入到MS SQL Server數據庫中,但這沒有發生。

但是,我可以將C#調用放入HTML中

元素,並使其正常工作,只要我使用虛擬的xCoord和yCoord編號並返回某些值即可(不是void)。

我的代碼實際上彈出了“成功!” 警報,但是當我運行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());
        }
    }

謝謝你的幫助。

您嘗試將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);
        }
    }

嘗試創建一個老式的Web服務(.asmx文件)而不是一個Web頁面(.aspx文件)。

如果創建WebApi端點,那就更好了。 將網頁用於Web服務不是一個好習慣

嘗試更改:

  data: "{'xCoord': '" + x + "', 'yCoord': '" + y + "'}",  

至:

  data: {'xCoord': x , 'yCoord':  y },

並嘗試添加數據類型:

  dataType: "json",
  contentType: 'application/json',

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM