怎么用asp.net+ajax将前台数据传回后台?

下面是我前台的代码

   <script>
                $(function () {
                var getdata = "1";
                    $.ajax({
                        type: 'post',
                        url: "ajax.aspx/test",
                        dataType: "json",
                        async: false,
                        data: { getdata:'1' },
                        success: function (obj) {
                        },
                        error: function (XMLHttpRequest, textStatus, errorThrown) {
                            alert(XMLHttpRequest.responseText);

                        }
                    });
                })
            </script>

下面是我后台的代码

[WebMethod]
        public static string  test(string id)
        {
            
            return id;
        }

但是我打开网页的时候报错,显示如下

img


我想知道为什么会报错?是我引入的js文件有问题还是什么?
其次,我发现后台的方法只能写静态的方法,我想问如果我想在一个asp.net的服务器button控件中接收前台ajax传来的代码的话该怎么写?因为一个Button对应的onclick方法不是如下的吗?但是这个Button方法的参数一个是object,一个是EventArgs,我是可以通过再加一个String来接收ajax传递的参数吗,还是该怎么做呢?因为我想做的事情是点击按钮后 后台读取前台ajax传来的数据。

protected void Button1_Click(object sender, EventArgs e)
        {
            …………;
        }

asp:button 如果想要调用 ajax 请求又不回发整个页面的话,使用 onClientClick就行了。 或者使用javascript/jquery 通过元素点击事件来执行 ajax请求就行。 简单例子:

<body>
    <form id="form1" runat="server">
        <div>
            <asp:Button runat="server" ID="setSession" Text="set Sesssion" OnClientClick="callAjax();return false;" />
        </div>
    </form>
    <script src="Scripts/jquery-3.4.1.min.js"></script>
    <script>
        var getdata = 1;

        function callAjax() {
            $.ajax({
                type: "POST",
                url: "End.aspx/test",
                data: "{id:" + getdata + "}",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (msg) {
                    // Do something interesting here.
                    console.log(msg);
                }
            });
        }
    </script>
</body>

注意传递参数名和 Webmethod 中的要保持一致,并且在执行请求结束时,加上return false;阻止页面回发。

這個有用使用到 jquery。可能需要另外找相關範例。
建議先熟悉 html form / aspx form submit 的動作。
然後再嘗試修改 aspx 內容以及加入各種前端。