农产品安全生产管理系统的核心是对农产品生产信息的管理。由于农产品生产信息涉及的内容比较多,而对于不同生产操作信息的处理过程基本上是类似的。下面就以农产品生产操作中的采收信息管理为例,详细介绍Ajax和jQeury框架下的系统具体功能实现。采收信息管理的主界面如图1所示。

图1 Ajax和jQeury框架下农产品安全生产管理系统采收信息管理的实现
对于生产信息的管理功能都是通过点击对应的按钮实现的,在传统的编程过程中,每个功能按钮的处理程序需要链接到一个新的页面;而在jQuery框架中,仅为每一类功能按钮绑定一个click事件,当用户点击某个按钮时,就会触发相对应的click事件来完成处理。
1 增加采收记录
在增加新的采收记录过程中,客户端网页需要更新的数据仅仅是用户新插入的数据,没必要更新整个页面。采用Ajax技术,与服务器传递的仅是新插入的数据,而不用传递整个页面的信息,从而大大减少了网络通信的数据量。采用异步传输模式,在与服务器通信的过程中,不影响用户的操作。同时,采用jQuery可以实现HTML页面的快速局部更新。基于Ajax+jQuery框架实现本过程主要分为以下几个步骤:
1)调用val方法读取用户在表单中输入的数据。varpickRecsID=$("#pickRecsID"). val()。
2)向服务器发送Ajax请求,新添加的采收数据作为参数发送到服务器,服务器返回到客户端的仅为新插入记录的id值。
$. post("projectmanager/pickfunction. jsp", {
//发送Ajax请求
action: "add",
pickRecsID: pickRecsID,
//参数列表
,},
function(data){ id=data; } );
//返回处理函数
3)客户端调用jQuery中的append方法将新添加的数据添加到信息列表中,只需将步骤(1)中获得的数据组织成表格中的一行添加到表格中即可。
$templateRow= $("#demoTable"). find(" tbody> tr: first"); //获取首行格式
var $clonedRow= $templateRow. clone( true);//行格式复制
$clonedRow. attr("id", id);
$clonedRow. find( " td: eq(0)"). text(pickRec-sID); //设置各数据域
...
$("#demoTable"). children(" tbody").append($clonedRow); //向列表中添加新行
以上过程中,只有(2)与服务器进行通信,传输的数据只有新加入的数据。新增数据后,界面的更新只通过jQuery向表格中添加一行,在此过程中并不需要刷新整个页面,从而实现数据的局部更新。
2 编辑记录
采收信息数据的更新界面如图2所示。整个过程可分为以下两个步骤:

图2 Ajax和jQeury框架下农产品安全生产管理系统采收信息管理的更新界面
1)当用户点击/编辑0按钮时,将对应行的数据显示到右侧编辑框中供用户编辑。
首先调用jQuery中的find方法获取相应行的各项信息;然后,采用调用val方法将获得的数据显示到右侧的编辑框中,此过程不需要访问服务器。实现这个过程的核心代码如下:
var $theRow= $( this). parents(" td: first"). parents(" tr: first");
var id=$theRow. attr("id");
varpickRecsID=$theRow. find(" td: eq(0)").text(); //find方法获取行中数据域
...
$("#pickId"). val(id);
$("#pickRecsID"). val(pickRecsID); //val方法将数据显示到编辑框中2)用户编辑完成以后,点击更新按钮来实现数据的更新,包括客户端数据列表以及数据库服务器中的数据更新。此过程与增加新记录的操作基本类似,不再赘述。
3 数据查询
传统的查询过程是先将查询条件发送到服务器。服务器根据查询条件检索数据库,然后将查询的结果重新生成HTML页面发送到客户端,最后客户端刷新页面。
jQuery提供了更为复杂和完整的选择器语法,允许在单个选择器中选择几乎所有的元素组合,不需要访问服务器,从而大大简化了数据查询的过程,并提高了查询效率。
本系统具体实现思想:使用选择器根据用户输入的查询条件,筛选数据表的满足条件,将不满足条件的数据行隐藏。如果要查询某一个日期的采收记录,用下面一行代码即可以实现。$("#demoTable tbody tr"). hide(). filter(": contains( "' +( $("#TimeSearch").val() )+" )' "). show();
4 统计曲线的生成

图3 Ajax和jQeury框架下农产品安全生产管理系统统计数据的生成
在农产品安全生产管理过程中,需要实时显示数据的变化趋势及生产信息的统计结果,如生产环境中的温湿度变化趋势和采收过程中采收数量的统计等。通过选择要显示的数据库中的数据变量,采用JfreeChart插件中的TimeSeries来生成趋势曲线。以利用工厂类ChartFactory的createTimeSeriesChart()方法获得JFreeChart类的实例,利用XYDataset数据集来封装绘制时序图的数据。生成趋势曲线的具体流程如图3所示。
