Can';t使用Ajax ASP.NET核心MVC更新部分视图
我想用Ajax更新我的局部视图,但由于某些原因,它不起作用。如果我使用load方法(和注释ajax代码),它就可以工作。这是我的代码: 这是我的主要观点:Can';t使用Ajax ASP.NET核心MVC更新部分视图,ajax,asp.net-core-mvc,Ajax,Asp.net Core Mvc,我想用Ajax更新我的局部视图,但由于某些原因,它不起作用。如果我使用load方法(和注释ajax代码),它就可以工作。这是我的代码: 这是我的主要观点: @model IEnumerable<WebApplicationMVC.Models.Test> @{ ViewData["Title"] = "Testing"; } <div id="partial"> @await Html.PartialAsync("Question", Model.ToList
@model IEnumerable<WebApplicationMVC.Models.Test>
@{
ViewData["Title"] = "Testing";
}
<div id="partial">
@await Html.PartialAsync("Question", Model.ToList()[0])
</div>
<input type="button" id="b" value="next" class="btn btn-default" />
<script>
$("#b").click(function () {
//this code doesn't work
$.ajax({
url: 'Test/Question',
type: 'GET',
contentType: "application/json; charset=utf-8",
data: { id: '@Model.ToList()[1].ID' },
dataType: "json",
success: function (result) {
$("#partial").html(result);
}
});
//this code works
@*$("#partial").load('@Url.Action("Question","Test",new { id=Model.ToList()[1].ID })');*@
});
我犯了什么错误?您指定了
数据类型:“json”,但您的方法返回的是一个视图(html),而不是JsonResult
,因此引发了一个异常
省略数据类型
选项(函数将根据响应计算出来)或将其更改为数据类型:“html”
此外,您还可以删除contentType
选项。您正在生成一个没有主体的GET,因此它被忽略(如果它是POST,您的方法也会失败,因为您没有序列化数据)
您的url也应该是/Test/Question
(正斜杠前面),并且应该始终使用@url.Action()
方法生成url
你的功能应该是
$.ajax({
url: '@Url.Action("Question","Test")',
type: 'GET',
data: { id: '@Model.ToList()[1].ID' },
success: function (result) {
$("#partial").html(result);
}
});
我想补充一点,当我点击正在抛出异常的按钮时,没有抛出异常(您将得到500(内部服务器错误)
-注意关于url的编辑您应该学会使用浏览器工具调试代码:)-错误的url将给出404
错误,而数据类型
将给出一个500
错误
$.ajax({
url: '@Url.Action("Question","Test")',
type: 'GET',
data: { id: '@Model.ToList()[1].ID' },
success: function (result) {
$("#partial").html(result);
}
});