Ajax将数据返回到地址栏

时间:2018-11-20 10:59:55

标签: javascript c# asp.net-mvc asp.net-ajax

所以我在ajax POST时遇到问题,它会将数据返回到地址栏,就好像它在执行get请求一样,但是我只指定了每个执行POST的操作。有趣的是,当我将其推送到git repo时,此代码正在工作。在测试新提交时,我注意到了这个问题,因此我又恢复到该提交,并且该问题在以前出现过,而不是以前出现。

示例返回-http://localhost:50922/Agency?id=0&createdbytype=&lastupdatedbytype=&created=01%2F01%2F0001+00%3A00%3A00&lastupdated=01%2F01%2F0001+00%3A00%3A00&name=100test&address1=test&address2=test&address3=test&town=test&countyid=1&postcode=test&telephoneno=54252636&

我的提交javascript函数

function SubmitForm(form) {
        if ($(form).valid()) {
            $.ajax({
                type: "POST",
                url: form.action,
                data: $(form).serialize(),
                success: function(data) {
                    if (data.success) {
                        Popup.dialog('close');
                        dataTable.ajax.reload();

                        $.notify(data.message,
                            {
                                globalPosition: "bottom center",
                                className: "success"
                            });
                    }
                }
            });
        }
        return false;
    }

我的表单指示符

<form>
@using (Html.BeginForm("AddOrEdit", "Agency", FormMethod.Post, new {onsubmit = "return SubmitForm(this)"}))

发布后,表单应该在上面运行该JS片段,但是它只会执行get请求,正如我之前所说的,此代码正在运行。

POST应该将数据发布到我的控制器中的方法中,但是它永远不会那么远。我已经尝试过从提交JS的顶部进行调试,并且在打开页面后,调试器首先要做的是:

function Delete(id) {
        if (confirm("Are you sure you wish to delete this item?")) {
            $.ajax({
                type: "POST",
                url: '@Url.Action("Delete", "Agency")/'+id, //<- here
                success: function(data) {
                    if (data.success) {
                        dataTable.ajax.reload();

                        $.notify(data.message,
                            {
                                globalPosition: "bottom center",
                                className: "success"
                            });
                    }
                }
            });
        }
    }

特别是

url: '@Url.Action("Delete", "Agency")/'+id,

但是删除功能可以正常工作。它会更改传递的id的布尔值,因为它是软删除,其中元组被标记为已删除或未删除。

我完全不知道为什么会发生此问题。非常感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

您将BeginForm()放在<form>元素中(嵌套表单是无效的html),并且它正在提交的外部表单(默认情况下是GET),而不是内部表单(和因此,您的SubmitForm()脚本将永远不会执行)。

删除外部<form>表单元素。