Violetttte 2022-12-15 19:42 采纳率: 82.8%
浏览 23
已结题

怎么用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)
        {
            …………;
        }

  • 写回答

2条回答 默认 最新

  • _东_ 2022-12-16 14:47
    关注

    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;阻止页面回发。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 12月31日
  • 已采纳回答 12月23日
  • 修改了问题 12月15日
  • 创建了问题 12月15日

悬赏问题

  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来