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

怎么用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日

悬赏问题

  • ¥15 Stata链式中介效应代码修改
  • ¥15 latex投稿显示click download
  • ¥15 请问读取环境变量文件失败是什么原因?
  • ¥15 在若依框架下实现人脸识别
  • ¥15 添加组件无法加载页面,某块加载卡住
  • ¥15 网络科学导论,网络控制
  • ¥15 利用Sentinel-2和Landsat8做一个水库的长时序NDVI的对比,为什么Snetinel-2计算的结果最小值特别小,而Lansat8就很平均
  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错