JQuery、JSON、Ajax在与ervlet结合的工资计算模块

        最近在作一我的力资源管理的项目,因为前期与师兄沟通不顺畅,致使了如今这个小模块的产生。这个小模块主要是作我的工资计算用的;分为三个部分:
        1)基本工资部分
        2)我的保险部分
        3)我的所得税部分
        除了第三部分以外,其余两部分均可以依据用户需求手动添加基本工资项和我的保险项,考虑到用户在进行工资计算的时候势必要对照本身所填信息,因而采用ajax技术与后台进行交互,可是ajax因为与浏览器的兼容问题,因而我又选择了jquery技术的ajax来解决。从后台传回来的值由于有三个(工资总和,我的保险总和,我的所得税),因此只能选用json做为传回值。在网上查找了不少资料,都不尽相同,试了几个都没什么效果,最后看到一篇文章很不错:http://hi.baidu.com/driftice/blog/item/2f7d2a89472af3ba0e244452.html,照着他的思路把个人模块实现了。
javascript

        先对模块进行技术分析,由于要手工添加基本工资项和我的保险项,这就须要使用前台的js来实现,这个地方我使用的是上一个亚美项目的现成代码来实现的比较简单,后来想用jquery来实现,可是发现貌似没那么简单,因而就把资料放在那,一直懒得研究了。html

        关键代码以下:java

function addBasicItem()
{
      var tdFile = document.getElementByIdx_x("basic");
      var tableRow = tdFile.insertRow(tdFile.rows.length-1);
      var i=tdFile.rows.length;
      tableRow.id = "rowr" + (i-1);
      var cell0 = tableRow.insertCell(0);
      cell0.className="th";
      cell0.innerHTML ="基本工资"+(i-1);
      var cell1 = tableRow.insertCell(1);
      cell1.innerHTML ="<input type='text' id='incomeAmt"+(i-1)+"' name='incomeAmt' value='0' maxlength='10'/><span class='unit'>元</span> <a href='javascript:deleteBasicItem(""+tableRow.id+"")';><span class='shanchu'>删除</span></a>";
}
//删除一行
function deleteBasicItem(rowId)
{
      var tableDetail = document.getElementByIdx_x("basic");
      tableDetail.deleteRow(document.getElementByIdx_x(rowId).rowIndex);
}

        解决了这个问题,那前台的问题就剩下格式校验了,话说这个问题也是比较好作的,这里不作详述了。
以后就是jquery ajxa的应用,前面说到,由于返回的时候是三个值,因此采用的是json,故须要不少包的支持
        1.java包的支持,想使用json,必须导入如下jar包:
    “json-lib-2.3-jdk15.jar”,同时需导入JSON依赖包“commons-logging-1.0.4.jar”,“commons-lang.jar”,“commons-collections.jar”,“commons-beanutils.jar”,“ezmorph-1.0.4.jar”;
        2 js相关的文件,一共有两个:需引入"jquery-1.4.2.min.js"与"json2.js"
        这样全部的准备工做已经完毕,如今jsp页面写出咱们要提交表单的js代码关
jquery

        键代码以下:ajax

jQuery(function($) {
        // 使用 jQuery 异步提交表单
        $('#myForm').submit(function() {
          $.ajax({
           url: 'cal',
           data: $('#myForm').serialize(),
           type: "post",
           cache : false,
           dataType:'json',
           success: function(data){
            $("#edTaxSum").attr("value",data.personTax);
            $("#fullSum").attr("value",data.tatolWages);
            $("#edInsSum").attr("value",data.instrument);
           }
          });
        return false;
       });
     });

        这段即包含了提交表单的一些设置,还提供了返回值的处理函数,在返回值的处理函数中,我将返回的数值分别赋值到三个input中。前台全部的关键技术已经结束了。json

        如今讲介绍servlet如何对ajax数据进行处理并返回。
        servlet对ajax数据的处理和post提交没有区别,主要是在如何生成json并返回这个地方。浏览器

        关键代码以下:app

//构建一个JSONObject
        JSONObject resultJSON = new JSONObject();
        resultJSON.accumulate("personTax", personTax);
        resultJSON.accumulate("instrument", instrument);
        resultJSON.accumulate("tatolWages", tatolWages);
        //须要设置ContentType为"application/x-json"
        resp.setContentType("application/x-json");
        PrintWriter out = resp.getWriter();
        //向客户端输出JSONObject字符串
        out.println(resultJSON.toString());
        out.flush();
        out.close();

        很简单,前台只须要设定好接受函数就能够了,虽然如今看来很简单的一个东西,可是在一开始,仍是搞得我焦头烂额的,用了一个下午的时间才真正搞定它异步

相关文章
相关标签/搜索