2011-04-04 35 views
0

我有一个表格,我选择的项目数量。点击提交后,它应该带我到一个新的页面,它将显示所选项目,并根据所选项目的数量,它会创建许多jqPlot,每个项目一个。jq页面加载图表

关于如何去做这件事的任何建议?

感谢, S.

+0

你提交与POST形式? – 2011-04-04 19:10:29

+0

他们基本上是JSF页面。所以,点击提交按钮后,我有一个动作可以将我重定向到所需的页面。 – 2011-04-04 19:54:12

回答

0

很难给出任何细节没有关于项目更详细,但基本上你会传递一个JSON结构,以你的观点与要绘制的项目。然后,您将遍历JSON结构,为要绘制的每个项目创建DIV标记,并将DIV标记附加到主体。

中的JavaScript将是这个样子:

$.each(items, function(index, value) { 
    $myPlot = $("<div>"); 

    $myPlot.attr("id", "item"+index); 

    $.jqplot($myPlot.attr("id"), ...); 

    $("body").append($myPlot); 

}); 
+0

谢谢,这给了我一个主意。我正在尝试类似的东西。我有JSF的前端和Groovy类作为后台bean。我会试着看看这些功能。 我是所有这些技术的新手。你有没有我可以阅读的样本/参考资料,以获得更多相同的见解?就像如何将数据转换为JSON一样,我如何从JSF页面调用这个javascript函数(假设我有一个单独的JS文件)。 – 2011-04-04 21:59:29

+0

@reg_frenzy不幸的是,我也不熟悉。我会建议为这些框架的具体实施问题提出一个新问题。 – 2011-04-04 23:08:48

0

这个问题很普遍,但在回答(特别是只)加载多个图表的问题:

你需要一个独特的HTML DIV每个图表的ID;考虑对每个图表/ div使用RFC 4122 UUID(根据需要生成),而不是每个图表/ div的顺序索引。使用的东西,看起来像这样的占位符DIV每个:

<div class="chartdiv" id="chartdiv-${UID}"> 
    <a rel="api" type="application/json" href="${JSON_URL}" style="display:none">Data</a> 
</div> 

这将嵌入的JSON网址里面的每个格,在一个隐藏的超链接,可以通过JavaScript的发现遍历您的多表HTML页面。

UUID的问题是无关紧要的 - 它似乎是保证每个图表可以通过JavaScript寻址的唯一HTML ID的最稳健的方式。

随后,你应该有JavaScript的,看起来像:

jq('document').ready(function(){ 
    jq('.chartdiv').each(function(index) { 
     var div = jq(this); 
     var json_url = jq('a[type="application/json"]', div).attr('href'); 
     var divid = div.attr('id'); 
     jq.ajax({ 
      url: json_url, 
      success: function(responseText) { /*callback*/ 
       // TODO: responseText is JSON, use it, normalize it, whatever! 
       var chartdata = responseText; 
       jq.jqplot(divid, chartdata.seriesdata, chartdata.options); 
      } 
     }); 
    }); 

});