2012-05-04 42 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部分。 –