背景私は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
}
サンプルコードでは、jquery.sparklinesの観点から正しいことをしていたので、実際に何が間違っているのかを知ることができたという自信を与えました。(非同期呼び出しの仕組みについてのばかげた仮定をしています) – glaucon
元の質問を編集して、私が間違っていることを他の人に知らせることを期待して展開していると言いました。あなたの最初のハイパーリンク@gareth – glaucon
は404エラー – hughesdan