AJAX对控制器调用了不同的操作

时间:2018-10-22 07:17:29

标签: ajax asp.net-mvc action

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 :(得分:0)

这可能是您的路由问题。 请尝试在不使用Url.Action()的情况下发布到端点,以帮助排除路由问题。 例如$ .post('http://localhost:53149/test1',{selectedIds:“ 1”})

很显然,您需要用自己的端口替换上面的端口(53149),但这应该有助于找出问题所在。 如果直接链接问题仍然存在,请检查您的路由表,并确保您的test1方法会被命中,然后再被索引方法捕获。

答案 1 :(得分:0)

.GetF类是否来自按钮?

我认为您正在单击的是一个按钮,而type这个按钮已提交,并且您正在索引页面中工作。

更改按钮type="button",您无需使用e.preventDefault();

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

我认为这可以解决您的问题。