Javascript ajax从C获取未定义的数据#
我想用谷歌图表建立一个网页。我试图用c#作为web表单构建它,并将数据从本地数据库获取到javascript。但这是行不通的,我有数据在ajax的响应中是未定义的。 这是c语言的代码#Javascript ajax从C获取未定义的数据#,javascript,c#,asp.net,ajax,google-visualization,Javascript,C#,Asp.net,Ajax,Google Visualization,我想用谷歌图表建立一个网页。我试图用c#作为web表单构建它,并将数据从本地数据库获取到javascript。但这是行不通的,我有数据在ajax的响应中是未定义的。 这是c语言的代码# [WebMethod] [ScriptMethod(ResponseFormat=ResponseFormat.Json)] 公共静态对象[]GetChartData() { 列表数据=新列表(); //这里MyDatabaseEntities是我们的dbContext 使用(MyDatabaseEntities
[WebMethod]
[ScriptMethod(ResponseFormat=ResponseFormat.Json)]
公共静态对象[]GetChartData()
{
列表数据=新列表();
//这里MyDatabaseEntities是我们的dbContext
使用(MyDatabaseEntities dc=new MyDatabaseEntities())
{
data=dc.GoogleChartDatas.ToList();
}
var chartData=新对象[data.Count+1];
chartData[0]=新对象[]{
“产品类别”,
“收入金额”
};
int j=0;
foreach(数据中的var i)
{
j++;
chartData[j]=新对象[]{i.Product_Category,i.RevenueAmount};
}返回图表数据;
}
javascript代码是:
<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="server">
<!-- Javascript Job-->
<script src="Scripts/jquery-1.10.2.js"></script>
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script>
var chartData; // globar variable for hold chart data
google.load("visualization", "1", { packages: ["corechart"] });
// Here We will fill chartData
$(document).ready(function () {
$.ajax({
url: "GoogleChart.aspx/GetChartData",
data: "",
dataType: "json",
type: "post",
contentType: "application/json; charset=utf-8",
success: function (data) {
chartData = data.d;
alert(chartData);
},
error: function () {
alert("Error loading data! Please try again.");
}
}).done(function () {
// after complete loading data
google.setOnLoadCallback(drawChart);
drawChart();
});
});
function drawChart() {
var data = google.visualization.arrayToDataTable(chartData);
var options = {
title: "Company Revenue",
pointSize: 5
};
var pieChart = new google.visualization.PieChart(document.getElementById('chart_div'));
pieChart.draw(data, options);
}
</script>
<div id="chart" style="width: 500px; height: 400px">
</div>
请帮忙!!如何在ajax中获取我的表数据并将它们放在图表中?首先,建议不要使用jsapi
加载库,根据
通过jsapi
loader仍然可用的谷歌图表版本不再持续更新。从现在起,请使用新的gstatic加载程序(loader.js
)
这只会更改load
语句
google.charts.load('current', {
callback: drawChart,
packages: ['corechart']
});
如上所述,可以在load
语句中设置回调
回调
将让您知道何时加载了GoogleCharts以及dom
因此不需要setOnLoadCallback
或$(文档)。就绪
至于其余的,建议使用以下设置
<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="server">
<!-- Javascript Job-->
<script src="Scripts/jquery-1.10.2.js"></script>
<script src="https://www.gstatic.com/charts/loader.js"></script>
<script>
google.charts.load('current', {
callback: drawChart,
packages: ['corechart']
});
function drawChart() {
$.ajax({
url: "GoogleChart.aspx/GetChartData",
data: "",
dataType: "json",
type: "post",
contentType: "application/json; charset=utf-8",
}).done(function (data) {
var data = google.visualization.arrayToDataTable(data.d);
var options = {
title: "Company Revenue",
pointSize: 5
};
var pieChart = new google.visualization.PieChart(document.getElementById('chart_div'));
pieChart.draw(data, options);
}).fail(function (jqXHR, textStatus, errorThrown) {
console.log("Error: " + errorThrown);
});
}
</script>
<div id="chart" style="width: 500px; height: 400px">
</div>
google.charts.load('current'{
回调:图纸,
软件包:['corechart']
});
函数绘图图(){
$.ajax({
url:“GoogleChart.aspx/GetChartData”,
数据:“,
数据类型:“json”,
类型:“post”,
contentType:“应用程序/json;字符集=utf-8”,
}).完成(功能(数据){
var data=google.visualization.arrayToDataTable(data.d);
变量选项={
标题:“公司收入”,
点数:5
};
var pieChart=new google.visualization.pieChart(document.getElementById('chart_div'));
绘制图表(数据、选项);
}).fail(函数(jqXHR、textStatus、errorshown){
log(“错误:+errorshown”);
});
}
首先,根据
通过jsapi
loader仍然可用的谷歌图表版本不再持续更新。从现在起,请使用新的gstatic加载程序(loader.js
)
这只会更改load
语句
google.charts.load('current', {
callback: drawChart,
packages: ['corechart']
});
如上所述,可以在load
语句中设置回调
回调
将让您知道何时加载了GoogleCharts以及dom
因此不需要setOnLoadCallback
或$(文档)。就绪
至于其余的,建议使用以下设置
<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="server">
<!-- Javascript Job-->
<script src="Scripts/jquery-1.10.2.js"></script>
<script src="https://www.gstatic.com/charts/loader.js"></script>
<script>
google.charts.load('current', {
callback: drawChart,
packages: ['corechart']
});
function drawChart() {
$.ajax({
url: "GoogleChart.aspx/GetChartData",
data: "",
dataType: "json",
type: "post",
contentType: "application/json; charset=utf-8",
}).done(function (data) {
var data = google.visualization.arrayToDataTable(data.d);
var options = {
title: "Company Revenue",
pointSize: 5
};
var pieChart = new google.visualization.PieChart(document.getElementById('chart_div'));
pieChart.draw(data, options);
}).fail(function (jqXHR, textStatus, errorThrown) {
console.log("Error: " + errorThrown);
});
}
</script>
<div id="chart" style="width: 500px; height: 400px">
</div>
google.charts.load('current'{
回调:图纸,
软件包:['corechart']
});
函数绘图图(){
$.ajax({
url:“GoogleChart.aspx/GetChartData”,
数据:“,
数据类型:“json”,
类型:“post”,
contentType:“应用程序/json;字符集=utf-8”,
}).完成(功能(数据){
var data=google.visualization.arrayToDataTable(data.d);
变量选项={
标题:“公司收入”,
点数:5
};
var pieChart=new google.visualization.pieChart(document.getElementById('chart_div'));
绘制图表(数据、选项);
}).fail(函数(jqXHR、textStatus、errorshown){
log(“错误:+errorshown”);
});
}
不,这对我不起作用。我仍然没有在上面的帖子中添加任何数据,感谢您添加了数据的图片,但我本应该更清楚——如果是json对象,查看data.d
的内容会很有帮助,然后使用arrayToDataTable
将不起作用——google需要一种特定的格式来直接从json创建数据表-->--使用浏览器的开发者控制台,请共享-->console.log(json.stringify(data.d))的结果代码>不,那对我不起作用。我仍然没有在上面的帖子中添加任何数据,感谢您添加了数据的图片,但我本应该更清楚——如果是json对象,查看data.d
的内容会很有帮助,然后使用arrayToDataTable
将不起作用——google需要一种特定的格式来直接从json创建数据表-->--使用浏览器的开发者控制台,请共享-->console.log(json.stringify(data.d))的结果代码>为什么chartData=data.d代码>?为什么chartData=data.d代码>?