AspNetBoilerplate Ajax 尽管有 200 个响应代码,但仍出现 restion 错误



我在aspnet样板系统中的ajax调用中遇到了一些意外的问题。

我想返回一个数组来填充一个选择列表,

ajax 调用正确触发并命中控制器。控制器将结果作为模型成功返回,但不断遇到错误。

这是我的控制器操作:

public async Task<List<DialectDto>> GetAllDialects(int Id)
{
var language = await _languageAppService.GetLanguage(Id);
return language.Dialects;
}

这是我的阿贾克斯电话 var languageId = $(this(.val((;

abp.ui.setBusy('#textContainer');

$.ajax({
url: abp.appPath + 'Language/GetAllDialects?Id=' + languageId,
type: 'POST',
contentType: 'application/json',
success: function (content) {
abp.ui.clearBusy('#textContainer');
},
error: function (e) {
abp.ui.clearBusy('#textContainer');
}
});

在 javascript 中检查返回对象会清楚地显示 200 结果,其中包含 responsetext 属性中的所有数据。

其他帖子表明内容类型未正确指定,这可能是 json 解析错误。我尝试将 dataType 属性设置为"json"和"文本",但仍然得到相同的响应

我只是在一个项目中遇到了同样的问题。我正在网络上使用AspNet样板。NET5项目。

就像在您的案例中一样,我在 JavaScript 代码中调用了一个返回 200 个代码的控制器方法,而在 JS 中我遇到了解析错误,然后没有执行"成功"代码。为了解决这个问题,我更改了控制器方法的返回值。我曾经返回一个 IActionResult 值(即 ASP.NET 的 Ok(( 值(。然后我将返回值更改为另一个对象(在我的例子中是 DTO(,之后一切都开始了。供参考:

之前(不工作(:

[HttpPost]
public async Task<IActionResult> Method([FromBody] YourClass input)
{
// method logic
return Ok();
}

之后(工作(:

[HttpPost]
public async Task<DtoClass> Method([FromBody] YourClass input)
{
// method logic
return dtoClass;
}

我还测试了返回 JsonResult 类可以像这样与框架一起工作(例如返回新的 JsonResult(result((。

希望这对将来的其他人有所帮助:)

最新更新