AJAX вызывает другое действие на контроллере - PullRequest
0 голосов
/ 22 октября 2018

Метод AJAX:

$(".GetF").click(function (e) {
    e.preventDefault();
    $.post('@Url.Action("test1", "flyer")', { "selectedIds": "1"})
                    .done(function (data) {
                        alert("Data Loaded: " + data);
                    });
});

Действие контроллера:

    [HttpPost]
    public ActionResult test1(string selectedIds)
    {
       ......
       return Json(list, JsonRequestBehavior.AllowGet);
    }

Каждый раз, когда я делаю этот вызов ajax, он вызывает только следующий метод

[HttpPost]
public ActionResult Index(FViewModel vm)
{
}

Я пыталсяизменение метода на HTTPGet и вызов ajax для type = 'get', который также не работает.

Я не могу определить, в чем именно заключается проблема.Обратите внимание, что на странице нет кнопки «Отправить» или формы.Элемент, для которого записано событие click, является просто обычной ссылкой.

Ответы [ 2 ]

0 голосов
/ 22 октября 2018

.GetF класс идет от кнопки?

Я думаю, это кнопка, которую вы нажимаете, и эти кнопки type отправлены, и вы работаете на своей странице индекса.

измените свою кнопку type="button", и вам не нужно использовать e.preventDefault();

$.post('@Url.Action("test1", "flyer")',
                {
                    selectedIds: '1',
                }).done(function (data) {
});

Я думаю, что это решит вашу проблему.

0 голосов
/ 22 октября 2018

Это может быть проблема с вашей маршрутизацией.Пожалуйста, попробуйте отправить сообщение на конечную точку без использования Url.Action (), чтобы исключить проблемы с маршрутизацией.например, $ .post ('http://localhost:53149/test1', {selectedIds: "1"})

Очевидно, что вам нужно заменить указанный выше порт (53149) своим собственным, но это должно помочь выяснить,в чем проблема.Если проблема с прямой связью не устранена, проверьте таблицу маршрутизации и убедитесь, что ваш метод test1 будет задействован, прежде чем он будет зафиксирован вашим методом индекса.

...