javascript - 从 MVC .Net 核心控制器读取 JSON 时出现问题
问题描述
我在 ASP.Net Core 5 中有一个 Web 应用程序,它也参考了 .Net 核心中的 Web API。它以 JSON 格式返回的内容必须从名为landing.js 的文件中读取。问题是数据到达变量(数据)但我无法访问它的方法,它总是设计未定义
我会从控制器返回字符串中的结果吗?它实际上应该以 JSON 格式到达 JS。
我的控制器:
public async Task<IActionResult> GetPodcastLandingPortada()
{
List<PPodcast> ppodcastPortada = new List<PPodcast>();
string jsonresultado = "";
using (var httpClient = new HttpClient())
{
using (var response = await httpClient.GetAsync("https://localhost:44379/api/Podcast/ObtenerPodcastPortadaPrincipal"))
{
string apiResponse = await response.Content.ReadAsStringAsync();
//ppodcastPortada = JsonConvert.DeserializeObject<List<PPodcast>>(apiResponse);
jsonresultado = JsonConvert.DeserializeObject(apiResponse).ToString();
}
}
return Ok(jsonresultado);
}
我的文件landing.js
window.onload = function () {
_getPortadaPrincipal();
} 函数 _getPortadaPrincipal() {
let ruta = '/podcast/GetPodcastLandingPortada';
$.ajax({
type: 'GET',
url: ruta,
contentType: JSON,
processData: false,
success: function (data) {
console.log(data.titulo); //this is where it returns undefinned, but the data variable is loaded
$("#portadaPrincipal").html(row);
console.log(data);
},
error: function () {
alert("Error en la carga de la Portada");
},
});
}
解决方案
首先,你做了一个重复的事情来返回一个 json。因此,您只需return Ok(apiResponse);
将其移动string apiResponse = await response.Content.ReadAsStringAsync();
到using
:
using (var response = await httpClient.GetAsync("https://localhost:44379/api/Podcast/ObtenerPodcastPortadaPrincipal"))
{
string apiResponse = await response.Content.ReadAsStringAsync();
return Ok(apiResponse);
}
其次,如果要获取json中的item值,还需要将json转换为js中的object。
因此,获取项目响应的正确方法应如下所示:
public async Task<IActionResult> GetPodcastLandingPortada()
{
using (var httpClient = new HttpClient())
{
using (var response = await httpClient.GetAsync("url"))
{
string apiResponse = await response.Content.ReadAsStringAsync();
var model = JsonConvert.DeserializeObject<List<PPodcast>(apiResponse);
return Ok(model);
}
}
}
然后你可以得到项目:
console.log(data[0].xxx); //because what you return is an array