【问题标题】:Use AJAX to submit data from HTML form to WebMethod使用 AJAX 将数据从 HTML 表单提交到 WebMethod
【发布时间】:2016-07-07 20:02:03
【问题描述】:

所以我从 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;
        }

我仍在学习如何使用很多这些东西,因此我们将不胜感激。

【问题讨论】:

    标签: asp.net ajax forms webmethod


    【解决方案1】:

    替换

    type: 'POST',
    

    method: 'POST',
    

    数据类型:'json' 不需要,因为您没有收到数据。服务端返回的数据,根据dataType参数进行格式化。

    同时删除 JSON.stringify(form),这已经用 .serialize();

    【讨论】:

    • 是的。感谢您的帮助!
    • 如何检查数据是否正在发送?
    【解决方案2】:

    替换

    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 扩展程序,您可以使用它测试发布值并查看结果。

    【讨论】:

    • 仍然失败。我以为“#addForm”指的是 html 表单的 id?
    • 是的,您也可以将其用作 $('#addForm')。我编辑了我的答案,请看我答案的结尾。
    • 我使用了您发布的确切代码,但仍然收到失败警报。我会试试 Advanced Rest Client。
    • 我认为我的服务器端工作正常。当我测试 POST 时,它的状态是“200:OK”,但就像我说的,我不知道我的格式是否正确。
    • 哦,序列化后我忘了把它添加到你的代码中检查编辑的答案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-25
    • 2021-03-19
    • 2021-02-26
    • 2019-02-22
    相关资源
    最近更新 更多