2011-10-10 9 views
5

背景私はPie Chartsを生成するためにjquery.sparklineを使用していjqueryの - 更新jquery.sparkline非同期データをフェッチした後

。円グラフのデータは配列に含まれています。

ページが最初にロードされると、(.ajaxを使用して)Webサービスが呼び出されてデータが取得され、指定されたコールバックが受信したデータを受け取り、円グラフに関連付けられた配列を更新します。

画面上のドロップダウンが値を変更すると、同じ更新プロセスが呼び出されます。私は偽= asynchにアヤックスの呼び出しを設定した場合、これはすべてが正常に動作します

状況

.ajax呼び出しをasynch = trueに設定した場合、パイに表示される結果は常に「1つ後のリフレッシュ」になります。これは、最初にパイがないことを意味し、ドロップダウンが変更されると、パイは最初にあったはずのようにレンダリングされます。

コード

$.ajax({ 
    type: "GET", 
    contentType: "application/json; charset=utf-8", 
    url: requestURL, 
    async: true , 
    success: function (data) { successCallback(data); }, 
    error: function (data) { failureCallback(data); } 
}); 

ヘルプ? 誰もがこの問題を認識していますか?

オプション 私は配列への変更を監視するために、Observerパターンのバリエーションを見て、自分自身を再描画するjquery.sparklineオブジェクトを説得(かどうかはわかりません)が、これは狂ったようで、私はしてきました確かに私はもっと簡単に何かを見落とさなければならない。



私はjquery.sparklineを行うには何もありませんでした(私が間違ってやっていたものを見ることができましたガレスと彼のサンプルコードに感謝します。

私はこのようないくつかの機能を持っていました:

function RefreshPieChart(){ 
    //First call managePieDataFetch() 
    //to kick off the web-service request 

    managePieDataFetch(); 

    //now reinitialise the jquery.sparkline 
    //pie charts on the basis that the 
    //array variable initialised in 
    //pieDataFetchCallBack() has the newest 
    //data in it. 
    // 
    //.... It hasn't ! 
} 
function managePieDataFetch(){ 
    //invoke the .ajax call and 
    //provide function pieDataFetchCallBack() as 
    //a call back function 
} 
function pieDataFetchCallBack(){ 
    //post process the data 
    //returned from a successful 
    //ajax call. Place the results 
    //into an array variable at 
    //script scope 
} 

答えて

7

私は、問題がどこにあるかを決定するために、より完全な例を参照する必要がありますが、非同期使用したい:。私のために細かな真の作品を

ここ

は非常に単純な作業の例へのリンクです:AJAX側用http://omnipotent.net/jquery.sparkline/ajaxtest.html

源はここにある: http://omnipotent.net/jquery.sparkline/ajax.phps

チャートが表示されていない場合(すなわち。 display:none).sparkline()が実際に呼び出された時点で、チャートが表示されるポイントで$ .sparkline_display_visible()を呼び出して、そのポイントでレンダリングされるようにする必要があります。

+0

サンプルコードでは、jquery.sparklinesの観点から正しいことをしていたので、実際に何が間違っているのかを知ることができたという自信を与えました。(非同期呼び出しの仕組みについてのばかげた仮定をしています) – glaucon

+0

元の質問を編集して、私が間違っていることを他の人に知らせることを期待して展開していると言いました。あなたの最初のハイパーリンク@gareth – glaucon

+0

は404エラー – hughesdan

関連する問題