Ajax отправляет данные в адресную строку - PullRequest
0 голосов
/ 20 ноября 2018

Таким образом, у меня возникла проблема с ajax POST, когда он возвращает данные в адресную строку, как будто он выполняет запрос get, но я только что все указал для выполнения POST.Самое смешное, что этот код работал, когда я отправил его в Git-репо.Я заметил проблему, когда я тестировал новый коммит, поэтому я вернулся к этому коммиту, и проблема появилась, когда раньше этого не было.

пример возврата- 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,

Однако функция удаления работает нормально.Он изменяет логическое значение для переданного идентификатора, так как это мягкое удаление, в котором кортеж помечается как удаленный или не удаленный.

Я совершенно не понимаю, почему возникает эта проблема.Любая помощь очень ценится.

1 Ответ

0 голосов
/ 20 ноября 2018

У вас есть BeginForm() внутри элемента <form> (вложенные формы недопустимы в формате html) и его внешняя форма (которая по умолчанию является GET), которая отправляет, а не внутренняя форма (и как следствие вашаSubmitForm() скрипт никогда не выполняется).

Удалите внешний элемент формы <form>.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...