【问题标题】:MVC refreshing page after Ajax call to controllerAjax 调用控制器后的 MVC 刷新页面
【发布时间】:2021-06-29 15:43:03
【问题描述】:

我的控制器中有以下内容:

public async Task < ViewResult > Favourites(string ids) {
    // code that fetches book data from API 

    if (data != null)

    {
        var bookList = JsonConvert.DeserializeObject < Book[] > (data);

        foreach(var book in bookList) {
            var matches = new List < bookList > ();
            if (bookList.All(book => ids.Contains(book.Id))) {
                matches.Add(book);
            }

            return View("Index", matches.ToArray());
        }
    }
    return View("Index");
}

我认为这是:

   <script>

        function getFavouriteBooks() {
            var ids = JSON.parse(localStorage.getItem("bookIds"));

            $.ajax({
                type: "POST",
                url: '/Home/Favourites',
                data: { ids: localStorage.getItem('bookIds') },
                success: function (response) {
                    window.location.href = '/Home/Favourites/' + ids ;
                }
            });
        }
    </script>

我认为window.location.href = '/Home/Favourites/' + ids; 不正确,但我的目标是使用从我的控制器 (return View("Index", matches.ToArray());) 调用的视图重新加载页面,但不知道如何执行此操作。

第一次点击控制器时,参数已正确填充数据,但第二次为空。我知道这是因为它是空的。

请有人解释一下如何在使用 ids 参数的 ajax 调用后加载视图?

【问题讨论】:

  • 你看到我的更新了吗?我在visual studio中对其进行了测试,它工作正常。你应该让我知道,如果它仍然不适合你。
  • @Sergey 谢谢你,但这是一个不同的问题,将值传递回控制器,这是为了在之后刷新视图。
  • 你可以问我怎么做。现在我再次发布了一个错误的代码,希望有人能够帮助你。
  • 当我们使用 AJAX 时,我们通常不想离开当前页面(不重新加载整个页面)。相反,我们可能 1)返回部分 h​​tml 片段以与当前 html 元素交换(如 li 列表) 2)返回状态响应(可能给出弹出警报)。通过使用window.location,您可以让浏览器导航到新位置——如果是这种情况,您只需执行标准表单提交并跳过 AJAX。

标签: javascript ajax asp.net-mvc razor


【解决方案1】:

您的控制器仅由获取请求调用 如果您想从控制器更改 ajax 设置或将 HttpPost 属性添加到控制器中获得结果。

type: "GET",

【讨论】:

    【解决方案2】:

    解决方法是将ajax调用成功部分改为:

          success: function (data) {
                            $("body").html(data);
                        }
    

    【讨论】:

      猜你喜欢
      • 2016-12-12
      • 2017-03-14
      • 2020-03-05
      • 1970-01-01
      • 1970-01-01
      • 2016-03-30
      • 1970-01-01
      • 1970-01-01
      • 2015-10-19
      相关资源
      最近更新 更多