【发布时间】:2020-02-18 15:47:08
【问题描述】:
在我在 .NET Core (2.2) MVC 中的应用程序中,我正在使用 ajax 使用用户输入向我的控制器发出 get 请求。
代码如下:
$.ajax({
type: 'GET',
url: "/BuildSheetsArea/TesterParameters/GetMassEditing",
data: { 'ChangeTypeId': ChangeTypeId, 'param': param, 'ParameterValue': ParameterValue },
dataType: 'json',
success: function (data) {
alert('success');
console.log(data);
},
error: function (emp) {
alert('error');
}
});
我的控制器成功命中,我的控制器正在返回结果。
这是我的控制器代码:
[HttpGet]
public System.Web.Mvc.JsonResult GetMassEditing(string ChangeTypeId, string param, string ParameterValue = "")
{
List<TesterParameterMassEditingViewModel> finalList = new List<TesterParameterMassEditingViewModel>();
// Code to perform necessary action
return new System.Web.Mvc.JsonResult { Data = finalList, JsonRequestBehavior = System.Web.Mvc.JsonRequestBehavior.AllowGet };
}
这是控制器成功返回结果的屏幕截图
但是关于成功,我没有得到任何我的看法。正如您在关于成功的 ajax 调用中看到的那样,我正在尝试将数据从控制器写入控制台,但在控制器返回数据后什么都没有发生。它永远不会回到我的 ajax 成功函数。
我错过了什么吗?请帮忙。
我正在使用 .NET Core 2.2 和 Entity Framework Core 2.2.6
编辑: 在此处添加网络选项卡结果截图
EDIT2: 在@Rena 建议我更改代码之后。但现在我遇到了一个新问题。当我尝试执行数据库查询时,从我的控制器 retun 中的任何尝试传递对象,我的请求进入挂起状态。说明如下。 这是我的 AXAJ 请求:
$.ajax({
type: 'POST',
url: "/BuildSheetsArea/TesterParameters/GetMassEditing",
data: {'ChangeTypeId': ChangeTypeId, 'param': param, 'ParameterValue': ParameterValue },
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
debugger;
alert('success');
console.log(data);
},
error: function (emp) {
alert('error');
},
});
});
这是我的控制器代码:
[HttpPost]
public async Task<JsonResult> GetMassEditing(string ChangeTypeId, string param, string ParameterValue)
{
List<TesterParameter> deviceList = await _context.TesterParameters.ToListAsync();
string val = "See from console";
return Json(deviceList);
}
我的设备列表中有 120 个对象。这种情况在浏览器的网络选项卡中我得到了这个。我的第一个请求处于待处理状态,我的 ajax 成功方法中没有任何结果。
但是如果我不做任何数据库查询而只返回一个字符串,它就可以正常工作
[HttpPost]
public async Task<JsonResult> GetMassEditing(string ChangeTypeId, string param, string ParameterValue)
{
string val = "See from console";
return Json(val);
}
在第三种情况下,如果我只执行 db 查询但返回简单字符串,我的网络选项卡会显示未决的请求,而在 ajax 成功方法中我什么也得不到。
请帮忙。
【问题讨论】:
-
如果你删除
dataType: 'json'会起作用吗? -
我试过删除 datatype: 'json' 。但还是一样。
-
你看到
alert('success')了吗?还要在开发工具的网络选项卡中检查请求的状态。 -
嗨,不,我看不到警报成功 :( 并且在我的网络选项卡中显示请求的状态 200。我正在将网络选项卡屏幕截图添加到我的帖子中
-
好的,有一点可能是错误的,即使失败了你也能成功,你可以尝试在浏览器窗口中正常执行请求并检查响应吗?
标签: .net ajax .net-core asp.net-core-mvc entity-framework-core