0

再取得データをd1配列にプッシュしたいのですが、前にアラートメッセージを配置しない限り実行されません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,}});
.
.
.
4

3 に答える 3

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

    });
于 2012-05-04T07:19:12.507 に答える
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,}});

既存のすべてのコードをそのまま使用します 注:- この方法は、AJAX GET 要求の応答まで UI が停止するため、お勧めしません。

于 2012-05-04T07:34:27.787 に答える
0

urチャートを描画する別の関数を作成します..その名前が、同じハンドラーでデータを解析する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);
})


コードの問題は、 $.get() が非同期であるため、アラートの後にデータが入力され、チャートがいっぱいになることです。jacks ans の問題は、成功ハンドラーにデータを入力しているにもかかわらず、チャートを描画するコードが成功ハンドラーの外部のどこかから呼び出されていることです。

于 2012-05-04T07:25:58.180 に答える