使用AJAX将数据从HTML表单提交到WebMethod

时间:2016-07-07 20:02:03

标签: asp.net ajax html-form webmethod

所以我从HTML表单中获取数据,然后使用AJAX将数据发送到Web方法然后发送到sqlite数据库,但我的AJAX调用失败了。我搞砸了什么?我这样做了吗?

HTML表单

<form id="addForm" >
     <input type="text"  name="playername" id="playername" placeholder="Player"/> 
     <input type="text" name="points" id="points" placeholder="Points" />
     <input type="text" name="steals" id="steals" placeholder="Steals" />
     <input type="text" name="blocks" id="blocks" placeholder="Blocks" /> 
     <input type="text" name="assists" id="assists" placeholder="Assists" />
     <input type="text" name="mpg" id="mpg" placeholder="MPG" /> 
     <input type="text" name="shotpct" id="shotpct" placeholder="Shot %" />
     <input type="text" name="threepct" id="3pct" placeholder="3 %" /> 
     <input type="button" value="add player" id="addbtn" name="addbtn" />
     </form>

AJAX

 $("#addbtn").click(function () {
                var form = $("#addForm").serializeArray();
                $.ajax({
                    type: 'POST',
                    url: "players.aspx/addRow",
                    data: JSON.stringify(form),
                    dataType: 'json',
                    success: function () {
                        alert('success');
                    },
                    error: function () {
                        alert('failure');
                    }
                });
                    });

和web方法(未完成,只是测试我是否获取数据)

[WebMethod]
        public static void addRow(object form)
        {
            var stuff = form;
        }

我还在学习如何使用这些东西,所以任何帮助都会受到高度赞赏。

2 个答案:

答案 0 :(得分:0)

替换

JSON.stringify(form)

$('form').serializeArray()

所以你会:

$("#addbtn").click(function () {
                var form = $("form").serializeArray();
                $.ajax({
                    type: 'POST',
                    url: "players.aspx/addRow",
                    data: form,
                    dataType: 'json',
                    success: function () {
                        alert('success');
                    },
                    error: function () {
                        alert('failure');
                    }
                });
                    });

如果仍然出错。您正在呼叫的页面中可能存在服务器端问题。为了确保我建议您使用'高级REST客户端',这是一个Google Chrome扩展程序,您可以使用它测试发布值并查看结果。

答案 1 :(得分:0)

替换

type: 'POST',

method: 'POST',

dataType:'json' 因为您没有收到数据,所以不需要。从服务器返回的数据根据​​dataType参数进行格式化。

同样删除JSON.stringify(form),这已经完成.serialize();