通过 jQuery 将 HTML 加载到 DIV 时出现错误 404
Error 404 while loading HTML into DIV by jQuery
我有使用 jQuery 中的 $.load()
将 HTML 插入 DIV
容器的代码,但我注意到有错误 404。这是 HTML代码
<div id="mathstudents"></div>
和JavaScript
var div = $('#mathstudents');
var url = '@(Url.Action("ListOfMathStudents", "Outer"))';
div.load(url, { page: 1 }, function() { alert('Finished'); });
动作和控制器的名称是正确的。我仔细检查了一下。当我将第二个参数添加为数据时出现问题:{ page: 1 }
.
我尝试了以下基于 $.get()
的代码,它确实有效:
var div = $('#mathstudents');
var url = '@(Url.Action("ListOfMathStudents", "Outer"))';
$.get(url, { page: "1" }, function (data) {
div.html(data);
});
我更喜欢 $.load()
,因为它保留在 website 上,它允许指定要插入的文档的一部分。
编辑:
这是控制器的代码:
[HttpGet]
public PartialViewResult ListOfMathStudents(int? page, bool? whichPage,
int? sort, bool? asc,
string filterType, string filterContent)
{
IndexViewModel viewModel = new IndexViewModel();
using (TestDBContext db = new TestDBContext())
{
viewModel.Students = getStudentList(db);
}
// Filtering
if (filterType != null && filterContent != null)
{
}
// Paging
page = (whichPage == null) ? (page ?? 1) : (whichPage.Value ? page++ : page--);
int maxPages = 0;
int currentPage = getCurrentPage(page, viewModel.Students.Count(), out maxPages);
viewModel.SPFDetails = new SPFDetails()
{
CurrentPage = currentPage,
MaxPages = maxPages,
MaxRecords = viewModel.Students.Count()
};
// Sorting
if (sort != null)
{
viewModel.Students = sort == 1 ? viewModel.Students.OrderBy(x => x) : viewModel.Students.OrderByDescending(x => x);
}
viewModel.Students = viewModel.Students.Skip((currentPage - 1) * SPFDetails.GroupSize).Take(SPFDetails.GroupSize);
viewModel.Students = viewModel.Students.ToList();
return PartialView(viewModel);
}
编辑2:
我刚读过 $.load()
使用 POST 传输数据。当我尝试 $.post()
而不是 $.get()
时,我得到了相同的结果:错误 404。虽然我必须为 POST 提供与动作签名匹配的参数的确切数量和所有输入参数。所以我将脚本更改为:
var div = $('#mathstudents');
var url = '@(Url.Action("ListOfMathStudents", "Outer"))';
div.load(url, {
page: 1,
nextPage: null,
sort: null,
asc: null,
filterType: null,
filterContent: null
});
但它仍然说有错误 404。
将您的操作属性从 [HttpGet]
更改为 [HttpPost]
。正如您提到的,jQuery 加载函数使用 POST 类型。但如果提供了数据参数,它使用 POST,如果没有,则它使用 GET。
来自 api docs
The POST method is used if data is provided as an object; otherwise, GET is assumed.
我有使用 jQuery 中的 $.load()
将 HTML 插入 DIV
容器的代码,但我注意到有错误 404。这是 HTML代码
<div id="mathstudents"></div>
和JavaScript
var div = $('#mathstudents');
var url = '@(Url.Action("ListOfMathStudents", "Outer"))';
div.load(url, { page: 1 }, function() { alert('Finished'); });
动作和控制器的名称是正确的。我仔细检查了一下。当我将第二个参数添加为数据时出现问题:{ page: 1 }
.
我尝试了以下基于 $.get()
的代码,它确实有效:
var div = $('#mathstudents');
var url = '@(Url.Action("ListOfMathStudents", "Outer"))';
$.get(url, { page: "1" }, function (data) {
div.html(data);
});
我更喜欢 $.load()
,因为它保留在 website 上,它允许指定要插入的文档的一部分。
编辑:
这是控制器的代码:
[HttpGet]
public PartialViewResult ListOfMathStudents(int? page, bool? whichPage,
int? sort, bool? asc,
string filterType, string filterContent)
{
IndexViewModel viewModel = new IndexViewModel();
using (TestDBContext db = new TestDBContext())
{
viewModel.Students = getStudentList(db);
}
// Filtering
if (filterType != null && filterContent != null)
{
}
// Paging
page = (whichPage == null) ? (page ?? 1) : (whichPage.Value ? page++ : page--);
int maxPages = 0;
int currentPage = getCurrentPage(page, viewModel.Students.Count(), out maxPages);
viewModel.SPFDetails = new SPFDetails()
{
CurrentPage = currentPage,
MaxPages = maxPages,
MaxRecords = viewModel.Students.Count()
};
// Sorting
if (sort != null)
{
viewModel.Students = sort == 1 ? viewModel.Students.OrderBy(x => x) : viewModel.Students.OrderByDescending(x => x);
}
viewModel.Students = viewModel.Students.Skip((currentPage - 1) * SPFDetails.GroupSize).Take(SPFDetails.GroupSize);
viewModel.Students = viewModel.Students.ToList();
return PartialView(viewModel);
}
编辑2:
我刚读过 $.load()
使用 POST 传输数据。当我尝试 $.post()
而不是 $.get()
时,我得到了相同的结果:错误 404。虽然我必须为 POST 提供与动作签名匹配的参数的确切数量和所有输入参数。所以我将脚本更改为:
var div = $('#mathstudents');
var url = '@(Url.Action("ListOfMathStudents", "Outer"))';
div.load(url, {
page: 1,
nextPage: null,
sort: null,
asc: null,
filterType: null,
filterContent: null
});
但它仍然说有错误 404。
将您的操作属性从 [HttpGet]
更改为 [HttpPost]
。正如您提到的,jQuery 加载函数使用 POST 类型。但如果提供了数据参数,它使用 POST,如果没有,则它使用 GET。
来自 api docs
The POST method is used if data is provided as an object; otherwise, GET is assumed.