categories:// ['10:18:13','10:20:11','10:21:03','10:53:08','10:55:14','10:56:16','10:57:21','10:58:29','10:59:33','11:10:33'], function () { $.get("ashx/Handler.ashx", { time: new Date().getTime() }, function (data) { alert(data); var dd = "{root:" + data + "}"; var dobj = eval("(" + dd + ")"); var x = eval("(" + data + ")"); var text="["; var dataarry = new Array(dobj.root.length); for (var i in x) { dataarry[i]=x[i].postdate; text+="'"+x[i].postdate+"'"; if(i!=dobj.root.length-1) { text+=","; } } text+="]"; alert(text); return text; }) }
categories:function(){ var value = ''; $.ajax({ url:'ashx/Handler.ashx', async:false,//设置为同步, data:{ time: new Date().getTime() }, success:function(data){ alert(data); var dd = "{root:" + data + "}"; var dobj = eval("(" + dd + ")"); var x = eval("(" + data + ")"); var text="["; var dataarry = new Array(dobj.root.length); for (var i in x) { dataarry[i]=x[i].postdate; text+="'"+x[i].postdate+"'"; if(i!=dobj.root.length-1){ text+=","; } } text+="]"; alert(text); value=text; } }); return value; }()
我按照这个方法写了,代码可以正常执行,alert也可以弹出数据但是效果没出来我把效果贴出来
<script type="text/javascript"> var chart; $(document).ready(function() { chart = new Highcharts.Chart({ chart: { renderTo: 'container', //放置图表的容器 plotBackgroundColor: null, plotBorderWidth: null, defaultSeriesType: 'line' }, title: { text: '气温走势' }, subtitle: { text: '测试仪' }, xAxis: {//X轴数据 // categories:// ['10:18:13','10:20:11','10:21:03','10:53:08','10:55:14','10:56:16','10:57:21','10:58:29','10:59:33','11:10:33'], categories:function(){ var value = ''; $.ajax({ url:'ashx/Handler.ashx', async:false,//设置为同步, data:{ time: new Date().getTime() }, success:function(data){ alert(data); var dd = "{root:" + data + "}"; var dobj = eval("(" + dd + ")"); var x = eval("(" + data + ")"); var text="["; var dataarry = new Array(dobj.root.length); for (var i in x) { dataarry[i]=x[i].postdate; text+="'"+x[i].postdate+"'"; if(i!=dobj.root.length-1){ text+=","; } } text+="]"; alert(text); value=text; } }); return value; }(), labels: { rotation: -45, //字体倾斜 align: 'right', style: { font: 'normal 13px 宋体' } } }, yAxis: {//Y轴显示文字 title: { text: '温度/℃' } }, tooltip: { enabled: true, formatter: function() { return '<b>' + this.x + '</b><br/>' + this.series.name + ': ' + Highcharts.numberFormat(this.y, 1); } }, plotOptions: { line: { dataLabels: { enabled: true }, enableMouseTracking: true//是否显示title } }, series: [{ name: '温度', // data:[13.00,14.00,14.21,15.00,15.50,16.00,19.00,18.70,17.10,14.00] data:function(){ var value = ''; $.ajax({ url:'ashx/Handler.ashx', async:false,//设置为同步, data:{ time: new Date().getTime() }, success:function(data){ alert(data); var dd = "{root:" + data + "}"; var dobj = eval("(" + dd + ")"); var x = eval("(" + data + ")"); var text="["; var dataarry = new Array(dobj.root.length); for (var i in x) { dataarry[i]=x[i].intvalue; text+=x[i].intvalue; if(i!=dobj.root.length-1){ text+=","; } } text+="]"; alert(text); value=text; } }); return value; }()
function () {
$.get("ashx/Handler.ashx", { time: new Date().getTime() }, function (data) {
alert(data);
var dd = "{root:" + data + "}";
var dobj = eval("(" + dd + ")");
var x = eval("(" + data + ")");
var text="[";
var dataarry = new Array(dobj.root.length);
for (var i in x) {
dataarry[i]=x[i].postdate;
text+="'"+x[i].postdate+"'";
if(i!=dobj.root.length-1)
{
text+=",";
}
}
text+="]";
alert(text);
return text;
})
}
var $a = list[ firingIndex ];
if ( $a.apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) {
memory = false; // To prevent further calls using add
break;
}
}
function x(){
$.ajax( , function( data ){
return ( text = data );
});
}
function x(){
$.ajax( , function( data ){
return ( text = data );
}, false );
}
enabled: true,
formatter: function() {
return '<b>' + this.x + '</b><br/>' + this.series.name + ': ' + Highcharts.numberFormat(this.y, 1);
}
$.get()的回调函数是不需要返回值,
说下你那个text是要用来干什么的
categories:function(){你的内容}();
意思是定义一个函数,并执行该函数
categories:function(){
var value = '';
$.ajax({
url:'ashx/Handler.ashx',
async:false,//设置为同步,
data:{ time: new Date().getTime() },
success:function(data){
alert(data);
var dd = "{root:" + data + "}";
var dobj = eval("(" + dd + ")");
var x = eval("(" + data + ")");
var text="[";
var dataarry = new Array(dobj.root.length);
for (var i in x) {
dataarry[i]=x[i].postdate;
text+="'"+x[i].postdate+"'";
if(i!=dobj.root.length-1){
text+=",";
}
}
text+="]";
alert(text);
value=text;
}
});
return value;
}()
$(document).ready(function() {
chart = new Highcharts.Chart({
chart: {
renderTo: 'container', //放置图表的容器
plotBackgroundColor: null,
plotBorderWidth: null,
defaultSeriesType: 'line'
},
title: {
text: '气温走势'
},
subtitle: {
text: '测试仪'
},
xAxis: {//X轴数据
// categories:// ['10:18:13','10:20:11','10:21:03','10:53:08','10:55:14','10:56:16','10:57:21','10:58:29','10:59:33','11:10:33'],
categories:function(){
var value = '';
$.ajax({
url:'ashx/Handler.ashx',
async:false,//设置为同步,
data:{ time: new Date().getTime() },
success:function(data){
alert(data);
var dd = "{root:" + data + "}";
var dobj = eval("(" + dd + ")");
var x = eval("(" + data + ")");
var text="[";
var dataarry = new Array(dobj.root.length);
for (var i in x) {
dataarry[i]=x[i].postdate;
text+="'"+x[i].postdate+"'";
if(i!=dobj.root.length-1){
text+=",";
}
}
text+="]";
alert(text);
value=text;
}
});
return value;
}(),
labels: {
rotation: -45, //字体倾斜
align: 'right',
style: { font: 'normal 13px 宋体' }
}
},
yAxis: {//Y轴显示文字
title: {
text: '温度/℃'
}
},
tooltip: {
enabled: true,
formatter: function() {
return '<b>' + this.x + '</b><br/>' + this.series.name + ': ' + Highcharts.numberFormat(this.y, 1);
}
},
plotOptions: {
line: {
dataLabels: {
enabled: true
},
enableMouseTracking: true//是否显示title
}
},
series: [{
name: '温度',
// data:[13.00,14.00,14.21,15.00,15.50,16.00,19.00,18.70,17.10,14.00]
data:function(){
var value = '';
$.ajax({
url:'ashx/Handler.ashx',
async:false,//设置为同步,
data:{ time: new Date().getTime() },
success:function(data){
alert(data);
var dd = "{root:" + data + "}";
var dobj = eval("(" + dd + ")");
var x = eval("(" + data + ")");
var text="[";
var dataarry = new Array(dobj.root.length);
for (var i in x) {
dataarry[i]=x[i].intvalue;
text+=x[i].intvalue;
if(i!=dobj.root.length-1){
text+=",";
}
}
text+="]";
alert(text);
value=text;
}
});
return value;
}()
}]
});
});
</script>这个是那JS的所有代码
现在效果:我写那个function就是为了得到categories: ['10:18:13','10:20:11','10:21:03','10:53:08','10:55:14','10:56:16','10:57:21','10:58:29','10:59:33','11:10:33'],
json解析什么的都才开始学.....
LZ 遇到没效果 一般先检查2个问题
1、数据类型
LZ的function;里面是用字符串拼接的。。 你查查你返回的数组是什么类型 我猜是字符串..2、实现代码问题 不多说。。
2.摟收的數據是字符串,還是數組要搞清楚,你return text的是字符串,categories的值要求是數組
$.ajax({
url: 'xxx',
success: function(data) {
var text = [];
...
var chart = new Highcharts.Chart({
...
categories: text;
...
});
}
});
出现楼主所说的问题,应该是value的值是字符串造成的。将return value 改为 return eval('('+value+')')(意思是将字符串转化为对象);试试看。
顶32楼!那些叫LZ把异步改同步的,都好坏哦~~,那还不如让LZ叫后端的同事在html生成的时候一并查出数据来输出算了。伦家用异步就是为了表格数据的加载和页面加载分离,提高用户体验的说。这下子又换成同步加载了,异步的优势都木有了。32楼才是正解呢。LZ把ajax请求和new Highcharts的代码顺序弄颠倒了。正确的做法应该是先ajax异步请求,在回调中拿到数据后再new Highcharts。可惜是异步,return搞不定,因为时空都错乱了,so,ajax回调再new Highcharts才是正解,异步改同步是偏方啊!