2012-05-04 43 views
0

我想在d1数组中推入我的returing数据,但除非在d1.push...之前放置警报消息,否则它不会发生。我试着把d1.push...代码放在arr=data.split(",");的底部,但它也没有工作。我应该怎么做才能将我的ajax数据放在图表中而不显示警告框!!!使用JQuery Ajax更新JQuery Flot

$(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,}}); 
. 
. 
. 

回答

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]]); 

    }); 
+0

谢谢杰克,但就像我说的,我试过了,它没有工作!那个......警戒盒也应该写在这种情况下。 –

+0

然后你必须添加更多信息。这可以解决您列出的代码的问题。如果代码的其余部分也包含问题,则还需要包含该代码。 无论如何,如果您对d1执行任何操作,您还需要在$ .get回调中执行此操作。 – Jack

+0

这是正确的答案;如果它不工作,那么在你的代码中有一些其他的错误;请更新你的问题,以反映已经尝试过。 – DNS

0

使绘制图表乌尔一个单独的功能..可以说,它的名字是DrawChart(data)呼叫在$.get()的成功处理程序的功能也解析在相同的处理你的数据。 $(函数(){ 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); 
}) 


problm与您的代码是$获得()是异步所以警报之后它填充数据和图表被填充。问题与杰克ans是尽管hez填写成功处理程序中的数据仍绘制图表的代码被称为从成功处理程序以外的一些地方。

+0

我的答案是$ .ajax {async:true} –

0

或者你可以使用异步:false在jquery阿贾克斯函数..所以你必须只是取代你现有的代码

$.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,}}); 

,并使用所有现有的代码,因为它是 注: - 不建议使用此方法,因为这会阻止你的用户界面,直至德AJAX的响应GET请求

+0

那么我可以在哪里获得我的数据?并使用arr = data.split(“,”); ??? –

+0

我编辑了我的代码 –

+0

它不工作,它甚至输入sucsess部分。 –