【发布时间】:2021-03-09 13:01:30
【问题描述】:
我想做的是从 asp.net 核心中的查询中的执行数据创建图表,但是当我使用控制器时,我在控制器中的 usnig [httppost] 中遇到问题,当我使用它时会出现错误 405,而当我不使用它时json 数据出现在视图中,下面是我的代码。
您好,我想做的是从 asp.net 核心中的查询中的执行数据创建图表,但是当我使用控制器时,我在控制器中的 usnig [httppost] 中遇到问题,它给我错误 405,而当我不这样做时使用它,json数据出现在视图中,下面是我的代码。
public JsonResult Index()
{
string query = "select UserId, count(ServiceOrderNumber) as OrderNum from [dbo].[ServiceOrders] group by [UserId] order by count ([ServiceOrderNumber]) desc";
string constr = this._configuration.GetConnectionString("DefaultConnection");
List<object> chartData = new List<object>();
chartData.Add(new object[]
{
"UserId", "OrderNum"
});
SqlConnection con = new SqlConnection(constr);
SqlCommand cmd = new SqlCommand(query);
cmd.CommandType = CommandType.Text;
cmd.Connection = con;
con.Open();
SqlDataReader sdr = cmd.ExecuteReader();
while (sdr.Read())
{
chartData.Add(new object[]
{
sdr["UserId"], sdr["OrderNum"]
});
}
con.Close();
return Json(chartData);
}
我的看法是
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Index</title>
</head>
<body>
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
<script type="text/javascript">
google.load("visualization", "1", { packages: ["corechart"] });
google.setOnLoadCallback(drawChart);
function drawChart() {
$.ajax({
type: "POST",
url: "/Reports/Index/",
contentType: "application/json; charset=utf-8",
cache: false,
traditional: true,
dataType: "json",
success: function (r) {
var data = google.visualization.arrayToDataTable(r);
//Pie
var options = {
title: 'USA City Distribution'
};
var chart = new google.visualization.PieChart($("#chart")[0]);
chart.draw(data, options);
},
failure: function (r) {
alert(r.d);
},
error: function (r) {
alert(r.d);
}
});
}
</script>
<div id="chart" style="width: 500px; height: 400px;">
</div>
</body>
</html>
【问题讨论】:
-
你可能对ajax的理解有误,页面加载后才会使用。405是浏览器地址栏不支持
post方法造成的。去掉httppost,默认是httpget。所以当你向后端发送一个get请求方法时,它会成功命中该方法,并且由于你写了return Json(chartData);,所以它会返回json字符串。
标签: c# asp.net-mvc asp.net-core asp.net-web-api charts