Ajax 调用控制器后 MVC 刷新页面
MVC refreshing page after Ajax call to controller
我的控制器中有以下内容:
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 之后加载视图吗?
您的控制器仅由 get 请求调用
如果您想从您的控制器更改 ajax 设置或将 HttpPost 属性添加到您的控制器。
type: "GET",
解决方案是将 ajax 调用成功部分更改为:
success: function (data) {
$("body").html(data);
}
我的控制器中有以下内容:
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 之后加载视图吗?
您的控制器仅由 get 请求调用 如果您想从您的控制器更改 ajax 设置或将 HttpPost 属性添加到您的控制器。
type: "GET",
解决方案是将 ajax 调用成功部分更改为:
success: function (data) {
$("body").html(data);
}