ajax 返回参数在highcharts中data处无法调用

qq_22591781 2015-07-09 04:20:28
一下是JS代码
var smoney;
$(function () {
var nf;
$("#selectYear").change(function(){
nf= $('#selectYear option:selected') .val();
$.ajax({
//要用post方式
type: "Post",
//方法所在页面和方法名
url: '<%=request.getContextPath() %>/servlet/InfoCountServlet?year='+nf,
async:false,
/* contentType: "application/json; charset=utf-8",*/
dataType: "text",
success: function (data) {
smoney = data;//此处测试,后台参数已经传输过来且数据为
//5832.0,0.0,20328.0,12600.0,77350.0,153787.84,134139.0,0.0,0.0,0.0,0.0,0.0
tj(smoney);
}
});
});
});

function tj(smoney){
alert(smoney.split(","));
$('#container').highcharts({
chart: {
type: 'column'
},
title: {
text: '进销信息统计直方图'
},
subtitle: {
text: '统计年份: 2015年'
},
xAxis: {
categories: [
'一月',
'二月',
'三月',
'四月',
'五月',
'六月',
'七月',
'八月',
'九月',
'十月',
'十一月',
'十二月'
]
},
yAxis: {
min: 0,
title: {
text: '金额 (万元)'
}
},
tooltip: {
headerFormat: '<span style="font-size:10px">{point.key}</span><table>',
pointFormat: '<tr><td style="color:{series.color};padding:0">{series.name}: </td>' +
'<td style="padding:0"><b>{point.y:.1f} 万元</b></td></tr>',
footerFormat: '</table>',
shared: true,
useHTML: true
},
plotOptions: {
column: {
pointPadding: 0.2,
borderWidth: 0
}
},
series: [{
name: '进货额',
data:smoney.split(",")//此处无法获取到数值

}, {
name: '销售额',
data: [83.6, 78.8, 98.5, 93.4, 106.0, 84.5, 105.0, 104.3, 91.2, 83.5, 106.6, 92.3]

}, {
name: '生活开支',
data: [48.9, 38.8, 39.3, 41.4, 47.0, 48.3, 59.0, 59.6, 52.4, 65.2, 59.3, 51.2]

}, {
name: '利润',
data: [42.4, 33.2, 34.5, 39.7, 52.6, 75.5, 57.4, 60.4, 47.6, 39.1, 46.8, 51.1]

}]
});
}

一下是后台servlet:
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String year = request.getParameter("year");
List<CountJavaBean> sellerList = countJavaBeanService.getSellerCountByMonths(year);
if(Validator.isNotEmpty(sellerList)){
Map<Integer,Double> map=new HashMap<Integer,Double>();
for(int j=0;j<12;j++){
map.put(j, 0.00);
for(int i=0;i<sellerList.size();i++){
CountJavaBean bean = sellerList.get(i);
if(bean.getMonths()-1==j){
map.put(j, bean.getMoney());
}
}
}
Collection<Double> c = map.values();
Iterator it = c.iterator();
StringBuffer moneys = new StringBuffer();
for(;it.hasNext();){
Double money = (Double) it.next();
moneys.append(money+",");
}
moneys.deleteCharAt(moneys.length()-1);
System.out.println("------------"+moneys.toString());
response.getWriter().print(moneys.toString());
}
}

请各位大能帮忙看下,小弟感激不尽,纠结了多天了,查了各种资料,还是毫无办法,非常感谢
...全文
264 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
scl555 2015-07-31
  • 打赏
  • 举报
回复
定义一个全局的变量,然后从后台取回之后赋值到全局,不要当参数传递。没有值的原因应该是highcharts在内部函数,无法调用到这个参数,设置成全局的试试
Go 旅城通票 2015-07-10
  • 打赏
  • 举报
回复
这样试试,split后得到的是字符串数组,data要求的是数字数组,不知道highcharts有没有做转换 data:eval('(['+smoney+'])')
蝶恋花雨 2015-07-09
  • 打赏
  • 举报
回复
//smoney = data;//此处测试,后台参数已经传输过来且数据为 tj(data);直接传递不用再赋值给变量试试。

52,797

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Ajax
社区管理员
  • Ajax
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧