我想在d1数组中推送我的returing数据,但除非我在d1.push...
之前发出警告消息,否则它不会发生。我尝试将d1.push...
代码放在arr=data.split(",");
的底部,但它既不起作用也不起作用。我该怎么做才能将我的ajax数据放入图表而不显示警告框!!! ????
$(function () {
var d1=[],previousPoint,arr=[];
$.get("../ajax/getcount.php", function(data){
arr=data.split(",");
});
alert("");// if I dont put this, my chart will be empty
d1.push([0,arr[0]]);
d1.push([1,arr[1]]);
d1.push([2,arr[2]]);
d1.push([3,arr[3]]);
d1.push([4,arr[4]]);
d1.push([5,arr[5]]);
d1.push([6,arr[6]]);
d1.push([7,arr[7]]);
d1.push([8,arr[8]]);
d1.push([9,arr[9]]);
d1.push([10,arr[10]]);
var ds = new Array();
ds.push({data:d1,bars:{show:true,barWidth:0.8,order:1,}});
.
.
.
答案 0 :(得分:3)
$ .get正在执行异步操作,但您尝试同步使用它。您需要将这些数组推送到$ .get回调中。例如:
$(function () {
var d1=[],previousPoint,arr=[];
$.get("../ajax/getcount.php", function(data){
arr=data.split(",");
d1.push([0,arr[0]]);
d1.push([1,arr[1]]);
d1.push([2,arr[2]]);
d1.push([3,arr[3]]);
d1.push([4,arr[4]]);
d1.push([5,arr[5]]);
d1.push([6,arr[6]]);
d1.push([7,arr[7]]);
d1.push([8,arr[8]]);
d1.push([9,arr[9]]);
d1.push([10,arr[10]]);
});
答案 1 :(得分:0)
创建一个单独的函数来绘制你的图表..让我们说它的名字是DrawChart(data)
调用$.get()
成功处理程序中的函数也在同一个处理程序中解析你的数据。
$(function(){
var d1 = [],previousPoint,arr = [];
$.get("../ajax/getcount.php", function(data){
arr=data.split(",");
d1.push([0,arr[0]]);
d1.push([1,arr[1]]);
d1.push([2,arr[2]]);
d1.push([3,arr[3]]);
d1.push([4,arr[4]]);
d1.push([5,arr[5]]);
d1.push([6,arr[6]]);
d1.push([7,arr[7]]);
d1.push([8,arr[8]]);
d1.push([9,arr[9]]);
d1.push([10,arr[10]]);
DrawChart(d1);
})
与您的代码有关的问题是$ .get()是异步的,所以在提醒之后它会填充数据并填充图表。和jacks ans的问题在于,虽然hez在成功处理程序中填充数据,但仍然会从成功处理程序之外的某些地方调用绘制图表的代码。
答案 2 :(得分:0)
或者你可以在jquery ajax函数中使用async:false ..所以你只需要替换你现有的代码
$.get("../ajax/getcount.php", function(data){
arr=data.split(",");
})
到这个
var arr = $.ajax("../ajax/getcount.php",{async:false,type:"GET"}).responseText.split(',');
d1.push([0,arr[0]]);
d1.push([1,arr[1]]);
d1.push([2,arr[2]]);
d1.push([3,arr[3]]);
d1.push([4,arr[4]]);
d1.push([5,arr[5]]);
d1.push([6,arr[6]]);
d1.push([7,arr[7]]);
d1.push([8,arr[8]]);
d1.push([9,arr[9]]);
d1.push([10,arr[10]]);
var ds = new Array();
ds.push({data:d1,bars:{show:true,barWidth:0.8,order:1,}});
并按原样使用所有现有代码 注意: - 不建议使用此方法,因为这会阻止您的ui直到AJAX GET请求的响应