背景jQuery的 - 更新jquery.sparkline后异步数据获取
我使用jquery.sparkline生产Pie Charts。饼图的数据包含在一个数组中。
当第一次加载页面时,会调用Web服务(使用.ajax)来获取数据,此处指定的回调将接收到的数据并更新与饼图关联的数组。
当屏幕上的下拉列表更改值时,会调用相同的更新过程。
形势
如果我设置了阿贾克斯来电ASYNCH = false这一切工作正常。
如果将.ajax调用设置为asynch = true,则饼图中显示的结果始终是“后面一个刷新”。通过这个我的意思是最初没有派,然后当下拉改变时,派生出来的应该是它最初的样子。
代码
$.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
对不起,我应该已经说过我编辑了我的原始问题,以扩展我做错了什么,希望它能告诉其他人。 – glaucon
@gareth您的第一个超链接返回404错误 – hughesdan