当我从其他操作或视图调用Json时,它会出错,但直接运行时成功了?
我有一个动作方法,在视图部分,我使用Json从控制器中的其他动作获取数据, 当我直接调用它时,它将进入成功方法, (将routConfig操作eqaul放入此操作) 但当我从链接调用操作时,它会出错, 我不知道为什么 控制器:当我从其他操作或视图调用Json时,它会出错,但直接运行时成功了?,json,asp.net-mvc,jqplot,Json,Asp.net Mvc,Jqplot,我有一个动作方法,在视图部分,我使用Json从控制器中的其他动作获取数据, 当我直接调用它时,它将进入成功方法, (将routConfig操作eqaul放入此操作) 但当我从链接调用操作时,它会出错, 我不知道为什么 控制器: [HttpGet] public ActionResult PieRenderer() { return View(); } [HttpPost] public JsonResult GetPieRenderer(
[HttpGet]
public ActionResult PieRenderer()
{
return View();
}
[HttpPost]
public JsonResult GetPieRenderer()
{
var DbResult = from d in db.Rep_TaskTypeQueuChart(0, 1)
select new
{
d.TaskTypeName,
d.WorkCount
};
//return Json(DbResult, JsonRequestBehavior.AllowGet);
return Json(DbResult);
}
视图:
$.jqplot('chartdiv',[[1,2],[3,5.12],[5,13.1],[7,33.6],[9,85.9],[11219.9]];
$(文档).ready(函数(){
//$.jqplot('chartdiv3',[[1,2],[3,5.12],[5,13.1],[7,33.6],[9,85.9],[11219.9]];
//$.ajax(警报('hiiii');//警报('111'))
$.ajax({
类型:“POST”,
url:“Cartable/GetPieRenderer”,
contentType:“应用程序/json;字符集=utf-8”,
数据类型:“json”,
成功:一旦成功,
错误:OnError
});
函数OnSuccess(响应){
var aData=响应;
var dataArray=[];
$。每个(数据、功能(i、项目){
push([item.TaskTypeName,item.WorkCount]);
警报(item.TaskTypeName);
});
var plot1=jQuery.jqplot('chartdiv3',[dataArray],
{
系列默认值:{
//做一个饼图。
渲染器:jQuery.jqplot.pierender,
渲染器选项:{
利润率:4,
//在饼图切片上放置数据标签。
showDataLabels:true
}
},
图例:{show:true,位置:'e'}
}
);
}
函数OnError(响应){
警报(“错误!”);
警报(response.toString());
}
});
如果我更改RoutConfig action=“PieRenderer”,它将显示结果。
但是如果我运行主仪表板视图,在那里我有一个actinlink或a href to PieRenderer方法,它会转到error method()。我找到了答案,问题是因为这一部分: url:“可移动/GetPieRenderer” 应该这样改变:
url:“/Cartable/GetPieRenderer”,我找到了答案,问题是因为这一部分: url:“可移动/GetPieRenderer” 应该这样改变: url:“/Cartable/GetPieRenderer”
<!-- CSS -->
<link href="~/Scripts/jqPlot/jquery.jqplot.min.css" rel="stylesheet" />
<!-- Scripts JS -->
<script src="~/Scripts/jquery-3.1.1.min.js"></script>
<script src="~/Scripts/jqPlot/jquery.jqplot.min.js"></script>
<script src="~/Scripts/jqPlot/plugins/jqplot.pieRenderer.js"></script>
<script>
$.jqplot('chartdiv', [[[1, 2], [3, 5.12], [5, 13.1], [7, 33.6], [9, 85.9], [11, 219.9]]]);
$(document).ready(function () {
// $.jqplot('chartdiv3', [[[1, 2], [3, 5.12], [5, 13.1], [7, 33.6], [9, 85.9], [11, 219.9]]]);
//$.ajax(alert('Hiiiiiiiii')); //alert('111')
$.ajax({
type: "POST",
url: "Cartable/GetPieRenderer",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: OnSuccess,
error: OnError
});
function OnSuccess(response) {
var aData = response;
var dataArray = [];
$.each(aData, function (i, item) {
dataArray.push([item.TaskTypeName, item.WorkCount]);
alert(item.TaskTypeName);
});
var plot1 = jQuery.jqplot('chartdiv3', [dataArray],
{
seriesDefaults: {
// Make this a pie chart.
renderer: jQuery.jqplot.PieRenderer,
rendererOptions: {
sliceMargin: 4,
// Put data labels on the pie slices.
showDataLabels: true
}
},
legend: { show: true, location: 'e' }
}
);
}
function OnError(response) {
alert("Error !");
alert(response.toString());
}
});
</script>
</div>