MVC 5 JsonResult returns html?
MVC 5 JsonResult returns html?
我一直在关注本教程 https://www.youtube.com/watch?v=c_MELPfxJug 关于 ajax 和 HomeController 中的 JsonResult
我完成了教程,但是由于某种原因,控制器返回 Html 而不是 json
我没有更改一行代码,但是 javascript 端出现 parseError 失败。
当我查看响应时,我看到一个 html 页面,而不是 json 对象。
控制器代码:
public JsonResult DoubleValue(int? Value)
{
if (!Request.IsAjaxRequest() || !Value.HasValue)
{ return null; }
else
{
int DoubleValue = Value.Value * 2;
var ret = new JsonResult
{
Data =
new { DoubleValue = DoubleValue }
};
return ret;
}
}
cshtml:
@using (Html.BeginForm())
{
@Html.TextBox("txtAmount",0)
<button id="btnDoubleValue">DoubleIT</button>
<div id="lblMessage"></div>
}
@section Scripts{
<script type="text/javascript">
$(function () {
$('#btnDoubleValue').on('click', function() {
$.ajax({
type: 'POST',
url: '@Html.Action("DoubleValue")',
data: { 'Value': $('#txtAmount').val() },
datatype: 'json',
cache: 'false'
}).success(function (data) {
var t = data;
$('#txtAmount').val(data.DoubleValue);
}).error(function (x, o, e) {
$('#lblMessage').html('error was found: ' );
});
return false;
})
});
</script>
}
我想这一定是默认错误页面,您可能会收到 500 响应,您必须使用浏览器的“网络”选项卡才能查看真正的问题。
- 在您的浏览器中使用 F12 键打开开发者工具并导航到“网络”选项卡。
- 执行 ajax 请求的适当操作(单击该按钮)
- 点击请求行
- 导航到响应选项卡。
从那里您可以看到您的 ajax 发出的真实请求以及来自服务器的响应。
发现错误
我使用的是 Html.Action 而不是 Url.Action -> 我想这只是人为错误
来自参考:
Html.Action - returns the result as an HTML string.
现在有效
$.ajax({
type: 'POST',
url: '@Url.Action("DoubleValue")', //<--- Url.Action
data: { 'Value': $('#txtAmount').val() },
datatype: 'json',
cache: 'false'
我一直在关注本教程 https://www.youtube.com/watch?v=c_MELPfxJug 关于 ajax 和 HomeController 中的 JsonResult
我完成了教程,但是由于某种原因,控制器返回 Html 而不是 json
我没有更改一行代码,但是 javascript 端出现 parseError 失败。
当我查看响应时,我看到一个 html 页面,而不是 json 对象。
控制器代码:
public JsonResult DoubleValue(int? Value)
{
if (!Request.IsAjaxRequest() || !Value.HasValue)
{ return null; }
else
{
int DoubleValue = Value.Value * 2;
var ret = new JsonResult
{
Data =
new { DoubleValue = DoubleValue }
};
return ret;
}
}
cshtml:
@using (Html.BeginForm())
{
@Html.TextBox("txtAmount",0)
<button id="btnDoubleValue">DoubleIT</button>
<div id="lblMessage"></div>
}
@section Scripts{
<script type="text/javascript">
$(function () {
$('#btnDoubleValue').on('click', function() {
$.ajax({
type: 'POST',
url: '@Html.Action("DoubleValue")',
data: { 'Value': $('#txtAmount').val() },
datatype: 'json',
cache: 'false'
}).success(function (data) {
var t = data;
$('#txtAmount').val(data.DoubleValue);
}).error(function (x, o, e) {
$('#lblMessage').html('error was found: ' );
});
return false;
})
});
</script>
}
我想这一定是默认错误页面,您可能会收到 500 响应,您必须使用浏览器的“网络”选项卡才能查看真正的问题。
- 在您的浏览器中使用 F12 键打开开发者工具并导航到“网络”选项卡。
- 执行 ajax 请求的适当操作(单击该按钮)
- 点击请求行
- 导航到响应选项卡。
从那里您可以看到您的 ajax 发出的真实请求以及来自服务器的响应。
发现错误 我使用的是 Html.Action 而不是 Url.Action -> 我想这只是人为错误
来自参考:
Html.Action - returns the result as an HTML string.
现在有效
$.ajax({
type: 'POST',
url: '@Url.Action("DoubleValue")', //<--- Url.Action
data: { 'Value': $('#txtAmount').val() },
datatype: 'json',
cache: 'false'