MVC控制器数据如何传递至JavaScript?新手开发者求助
解决ASP.NET Core控制器数据无法传递到JavaScript的问题
嘿,作为编程新手遇到这种数据传递的问题太正常了,我帮你一步步排查和修复:
首先,修复控制器里的代码逻辑问题
你的Index方法里的代码块写法有明显错误,会导致逻辑混乱:
public IActionResult Index() { { Getstatus(); return View(); } // 嵌套大括号是错误写法,且Getstatus不需要在这里调用 }
改成正确的逻辑:Index方法只需要返回视图即可,Getstatus是独立的API接口,由前端Ajax单独调用:
public IActionResult Index() { return View(); }
另外,请确认query.TotalVotes确实是List<VoteStatistics>类型,这样返回的JSON才是你需要的数组结构。
修复jQuery Ajax的语法与逻辑漏洞
你尝试的Ajax代码里有几个容易踩的坑:
- 配置对象里直接写
debugger;会导致JS语法解析失败 - 没有指定
dataType: 'json',浏览器可能无法正确识别返回的数据格式 - 缺少错误处理逻辑,无法知道请求是否失败
修复后的Ajax代码:
<script> $(function(){ $.ajax({ type: "GET", url: '@Url.Action("Getstatus","Test")', dataType: 'json', // 明确告诉jQuery预期返回JSON格式 success: function (votings) { console.log('成功获取到的数据:', votings); // 先在控制台打印数据,确认结构正确 var labelsArray = []; var dataArray = []; $.each(votings, function (index, data) { labelsArray.push(data.IDParty); dataArray.push(data.Votes); }); renderChart(labelsArray, dataArray); }, error: function(jqXHR, textStatus, errorThrown) { console.error('请求出错了:', textStatus, errorThrown); // 查看错误信息,快速定位问题 } }); }); </script>
确保必要的脚本已正确加载
你的视图代码里没有显示引用jQuery和Chart.js,这是关键前提!必须在渲染图表的脚本之前加载这两个库:
<!-- 可以放在视图的<head>标签内,或者页面底部 --> <script src="https://code.jquery.com/jquery-3.7.1.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/chart.js@4.4.8/dist/chart.umd.min.js"></script>
如果是本地项目的脚本文件,确保文件路径正确即可。
实用调试小技巧
- 按下F12打开浏览器开发者工具,切换到Console标签,查看是否有JS报错信息
- 切换到Network标签,查看
Getstatus接口的请求状态码和返回的数据是否符合预期
按照这些步骤调整后,应该就能成功获取数据并渲染出柱状图了!
内容的提问来源于stack exchange,提问作者Ionaș Cristian
相关产品推荐
相关产品推荐

