通过jQuery将HTML加载到DIV时出错404

时间:2015-01-12 10:36:01

标签: javascript jquery asp.net-mvc

我有使用jQuery中的DIV将HTML插入$.load()容器的代码,但我注意到错误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);
}


EDIT2: 我刚刚阅读$.load()使用POST来传输数据。当我尝试$.post()而不是$.get()时,我得到了相同的结果:ERROR 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
});

但它仍然说有ERROR 404。

1 个答案:

答案 0 :(得分:1)

将您的操作属性从[HttpGet]更改为[HttpPost]。如你所述,jQuery加载函数使用POST类型。但是如果提供数据参数则使用POST,如果不是则使用GET。

来自api docs

  

如果数据作为对象提供,则使用POST方法;否则,假设GET。