【问题标题】:how to load graph after loading other data加载其他数据后如何加载图形
【发布时间】:2012-06-22 09:11:34
【问题描述】:

我正在使用 rails 3.2.1

我的页面分为5个部分

第 1 部分标题
第 2 部分 div 区域
第 3 部分图表部分
表格格式的第 4 部分数据
第 5 部分页脚

现在我的问题是上传图表需要太多时间。
由于此页面加载时间过长。

请告诉我任何方法,以便我的图表在最后加载,但其他数据会显示。

【问题讨论】:

  • 我认为您的意思是“下载”而不是“上传”?您使用什么技术来渲染图表?

标签: jquery ruby-on-rails-3 html jquery-ui


【解决方案1】:

如果问题是图形数据的下载时间过长,那么您需要使用 AJAX 调用单独下载它,而不是直接将其包含在页面中。比如:

$.getJSON("/url/to/your/data", function(data){$.jqplot('chart1', data)});

...您必须通过使/url/to/your/data 提供与您当前嵌入页面中的相同的图形数据来支持服务器。该代码将开始下载,然后将图形数据与页面的其余部分分开呈现。

如果这导致 DOM 没有完全准备好(不知道为什么会这样),那么包装你的调用,以便它只在文档完全呈现时发生:

$(function(){
    $.getJSON("/url/to/your/data", function(data){$.jqplot('chart1', data)});
});

【讨论】:

    【解决方案2】:

    您可以做的第一件事是在条件为真时调用绘制图形的函数。例如:

    (function isMyDataLoaded(){
    
        //if the table is rendered
        if($('#TableData').length==0){
             setTimeout(isMyDataLoaded,100);    
        }else{
              DrawGraphFunction();    
        }
     })();
    

    注意:我不知道你的逻辑,所以你可以使用其他条件。

    【讨论】:

    • 我如何检查我的其他数据是否被渲染?
    • 当其他数据被渲染时,他用它渲染表格 - 我用的是检查是否有这样 ID 的表格 - $(#TableID).length
    • 在 jquery 中没有什么可以找到你说的内容。
    • @manishnautyal 这只是一个普通的递归函数——你也可以在 if 语句中添加多个条件。例如: if($('#TableData1').length==0|$('#TableData2').length==0...) 不渲染图形 - 等待 100 毫秒.. 你明白了吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 2019-12-01
    相关资源
    最近更新 更多