【发布时间】: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)返回部分 html 片段以与当前 html 元素交换(如 li 列表) 2)返回状态响应(可能给出弹出警报)。通过使用
window.location,您可以让浏览器导航到新位置——如果是这种情况,您只需执行标准表单提交并跳过 AJAX。
标签: javascript ajax asp.net-mvc razor