Javascript 是否将变量传递到amCharts.loadfile方法?
形势 我正在制作一个图形,用户可以在下拉列表中选择一个值,并将数据加载到图形中。 我在amCharts网站上找到了一个类似的例子。 这个例子的问题是数据是“硬编码”的,所以对于每个选项,它们必须是预构建的链接 我所做的 到目前为止,我已经让我的图表工作,并创建了一个控制器,根据传入的“项目”统计3种状态 但是,我的item_name变量始终为空Javascript 是否将变量传递到amCharts.loadfile方法?,javascript,amcharts,Javascript,Amcharts,形势 我正在制作一个图形,用户可以在下拉列表中选择一个值,并将数据加载到图形中。 我在amCharts网站上找到了一个类似的例子。 这个例子的问题是数据是“硬编码”的,所以对于每个选项,它们必须是预构建的链接 我所做的 到目前为止,我已经让我的图表工作,并创建了一个控制器,根据传入的“项目”统计3种状态 但是,我的item_name变量始终为空 public ActionResult checkPriority(string item_name) { decimal?[] priCou
public ActionResult checkPriority(string item_name)
{
decimal?[] priCount = { 0, 0, 0 };
priCount[0] = db.vw_priCount.Where(i => i.itemDescrip == item_name&& i.itemStatus == 1).Count();
priCount[1] = db.vw_priCount.Where(i => i.itemDescrip == item_name&& i.itemStatus == 2).Count();
priCount[2] = db.vw_priCount.Where(i => i.itemDescrip == item_name&& i.itemStatus == 3).Count();
return Json(priCount, JsonRequestBehavior.AllowGet);
}
这是我的索引页代码
<script>
var chart;
$(document).ready(function () {
$.ajax({
type: "POST",
url: '/Home/checkPriority',
data:{
item_name: "Pens"
},
dataType: "json",
success: OnSuccessBoxCountPri,
error: OnErrorCallPri
});
});
function OnErrorCallPri(response) {
alert('An error occured with the charts, please try again later.');
}
function OnSuccessBoxCountPri(priCount) {
console.log(priCount);
chart = AmCharts.makeChart("pribarchartdiv", {
"type": "serial",
"theme": "none",
"marginRight": 70,
"dataProvider": [{
"Priority Level": "Low",
"cost": priCount[0],
"color": "#FF0F00"
}, {
"Priority Level": "Medium",
"cost": priCount[1],
"color": "#FF6600"
}, {
"Priority Level": "High",
"cost": priCount[2],
"color": "#FF9E01"
}, {
"Priority Level": "Very High",
"cost": priCount[3],
"color": "#04D215"
}],
"valueAxes": [{
"axisAlpha": 0,
"position": "left",
"title": "Priority"
}],
"startDuration": 1,
"graphs": [{
"balloonText": "<b>[[category]]: [[value]]</b>",
"fillColorsField": "color",
"fillAlphas": 0.9,
"lineAlpha": 0.2,
"type": "column",
"valueField": "cost"
}],
"chartCursor": {
"categoryBalloonEnabled": false,
"cursorAlpha": 0,
"zoomable": false
},
"categoryField": "Priority Level",
"categoryAxis": {
"gridPosition": "start",
"labelRotation": 45
},
"export": {
"enabled": true
}
});
}
function setDataSet(dataset_url) {
AmCharts.loadFile("checkPriority",{}, function (data) {
console.log(dataset_url);//itemname in here
console.log(data);//0,0,0
chart.dataProvider = AmCharts.parseJSON(data);
chart.validateData();
});
}
</script>
<p class="selector">
<select onchange="setDataSet(this.options[this.selectedIndex].value);">
<option value="Pens">Data Set #1</option>
<option value="Chalk">Data Set #2</option>
<option value="Books">Data Set #3</option>
</select> < Select a data set
</p>
var图;
$(文档).ready(函数(){
$.ajax({
类型:“POST”,
url:“/Home/checkPriority”,
数据:{
项目名称:“笔”
},
数据类型:“json”,
成功:OnSuccessBoxCountPri,
错误:OnErrorCallPri
});
});
函数OnErrorCallPri(响应){
警报('图表出现错误,请稍后再试');
}
函数OnSuccessBoxCountPri(priCount){
控制台日志(priCount);
chart=AmCharts.makeChart(“pribarchartdiv”{
“类型”:“串行”,
“主题”:“无”,
“marginRight”:70,
“数据提供者”:[{
“优先级”:“低”,
“成本”:priCount[0],
“颜色”:“FF0F00”
}, {
“优先级”:“中等”,
“成本”:priCount[1],
“颜色”:“FF6600”
}, {
“优先级”:“高”,
“成本”:priCount[2],
“颜色”:“FF9E01”
}, {
“优先级”:“非常高”,
“成本”:priCount[3],
“颜色”:“04D215”
}],
“价值轴”:[{
“axisAlpha”:0,
“位置”:“左”,
“标题”:“优先权”
}],
“起始持续时间”:1,
“图表”:[{
“文本”:“[[category]]:[[value]]”,
“fillColorsField”:“color”,
“填充字母”:0.9,
“lineAlpha”:0.2,
“类型”:“列”,
“valueField”:“成本”
}],
“图表光标”:{
“CategoryBallooneEnabled”:false,
“cursorAlpha”:0,
“可缩放”:错误
},
“类别字段”:“优先级”,
“分类法”:{
“网格位置”:“开始”,
“唇瓣旋转”:45
},
“出口”:{
“已启用”:真
}
});
}
函数setDataSet(数据集\ url){
AmCharts.loadFile(“checkPriority”,{},函数(数据){
console.log(dataset_url);//此处为itemname
console.log(数据);//0,0,0
chart.dataProvider=AmCharts.parseJSON(数据);
chart.validateData();
});
}
数据集#1
数据集#2
数据集#3
选择一个数据集
我相信这是一行
AmCharts.loadFile(“checkPriority”,{},function(data){
,我应该传递我的变量(它是复选框的值)在中。如果我能提供帮助,我将不胜感激。AmCharts.loadFile
是由执行GET请求的dataLoader插件提供的AJAX方法。如中所示,第一个参数是指向端点的URL,因此您需要将有效URL作为第一个参数传递
由于端点需要POST来获取数据,因此最好使用自己的AJAX调用,而不是使用loadFile方法。例如:
function setDataSet(dataset) {
$.ajax({
type: "POST",
url: '/Home/checkPriority',
data:{
item_name: dataset
},
dataType: "json",
success: function(data) {
chart.dataProvider = data;
/* or if you need to set each element individually like in your makeChart call:
chart.dataProvider = [{
"Priority Level": "Low",
"cost": data[0],
"color": "#FF0F00"
}, {
"Priority Level": "Medium",
"cost": data[1],
"color": "#FF6600"
}, {
"Priority Level": "High",
"cost": data[2],
"color": "#FF9E01"
}, {
"Priority Level": "Very High",
"cost": data[3],
"color": "#04D215"
}];
*/
chart.validateData();
},
error: OnErrorCallPri
});
}