2012-05-04 12 views
0

私の退縮データをd1配列にプッシュしたいのですが、d1.push...の前に警告メッセージを表示しない限り起こりません。 d1.push...コードをarr=data.split(",");の下に貼り付けてみましたが、どちらも機能しませんでした。警告ボックスを表示せずにチャートに私のAjaxデータを置くために何をすべきですか?JQueryでJQuery Flotを更新する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,}}); 
. 
. 
. 

答えて

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

ありがとう要求GET tehのAJAXの応答まで、あなたのUIを停止します。このよう推奨されていません私は言ったように、私はそれを試みた、それは仕事をdidnt!この場合、警告ボックスも書き込まなければなりません。 –

+0

さらに情報を追加する必要があります。これは、あなたがリストしたコードの問題を解決します。残りのコードにも問題がある場合は、それも含める必要があります。 どんな場合でも、d1で何かをする場合は、$ .getコールバック内で行う必要があります。 – Jack

+0

これは正解です。それが動作していない場合は、あなたのコードにいくつかのバグがあります。これを試したことを反映するために質問を更新してください。 – DNS

0

ウルチャートを描画する別々の機能を作る...その名も同じハンドラでデータを解析$.get()の成功ハンドラに関数を呼び出すDrawChart(data)であると言うことができます。 $(関数(){ する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は$に.get()は非同期であるということです、それはデータを移入し、警告した後ようにグラフがいっぱいで、ジャックの問題は、成功ハンドラのデータをhezで埋めても、グラフを描画するコードが成功ハンドラの外のどこからでも呼び出されています。

+0

私の答えは$ .ajax {async:true}でした –

0

代わりにjqueryでasync:falseを使用できますajax関数..あなたは既存のコードを置き換える必要があります

それは 注 この

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

から

、すべての既存のコードを使用しているよう: - この方法は、

+0

だからどこのデータを取得できますか? arr = data.split( "、");を使用します。 ??? –

+0

私は自分のコードを編集しました –

+0

それdoesnt仕事、それはsucsessの部分を入力するdosnt。 –

関連する問題