博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JQuery、JSON、Ajax在与ervlet结合的工资计算模块
阅读量:7101 次
发布时间:2019-06-28

本文共 2789 字,大约阅读时间需要 9 分钟。

hot3.png

        最近在做一个人力资源管理的项目,由于前期与师兄沟通不畅,导致了现在这个小模块的产生。这个小模块主要是做个人工资计算用的;分为三个部分:

        1)基本工资部分
        2)个人保险部分
        3)个人所得税部分
        除了第三部分之外,其他两部分都可以依据用户需求手动添加基本工资项和个人保险项,考虑到用户在进行工资计算的时候势必要对照自己所填信息,于是采用ajax技术与后台进行交互,但是ajax由于与浏览器的兼容问题,于是我又选择了jquery技术的ajax来解决。从后台传回来的值因为有三个(工资总和,个人保险总和,个人所得税),所以只能选用json作为传回值。在网上查找了很多资料,都不尽相同,试了几个都没什么效果,最后看到一篇文章很不错:http://hi.baidu.com/driftice/blog/item/2f7d2a89472af3ba0e244452.html,照着他的思路把我的模块实现了。

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

        关键代码如下:

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 ="
元 
删除";}//删除一行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(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中。前台所有的关键技术已经结束了。

        现在讲介绍servlet如何对ajax数据进行处理并返回。

        servlet对ajax数据的处理和post提交没有区别,主要是在如何生成json并返回这个地方。

        关键代码如下:

//构建一个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();

        很简单,前台只需要设定好接受函数就可以了,虽然现在看来很简单的一个东西,但是在一开始,还是搞得我焦头烂额的,用了一个下午的时间才真正搞定它

转载于:https://my.oschina.net/u/216467/blog/205957

你可能感兴趣的文章
在ubuntu下搭建eclipse3.7的android开发环境
查看>>
docker安装jdk,tomcat
查看>>
Win10 禁用 WPS 各个软件的自动更新
查看>>
RESTful API 设计指南
查看>>
第一次在Linux系统上编译TCC的Android SDK记实
查看>>
我的友情链接
查看>>
技术博客2014年1月份头条记录
查看>>
KeyMob移动广告聚合平台简介
查看>>
我的友情链接
查看>>
eclipse常用插件在线安装地址或下载地址{转载自:旭龙 360doc}
查看>>
redis 客户端操作命令
查看>>
我的友情链接
查看>>
NO.12 禅道首页也改版了昂
查看>>
windows的磁盘操作之六——获取系统所在物理磁盘号
查看>>
linux 修改主机名
查看>>
7、OC —— set方法内存管理分析
查看>>
windows防火墙无法运行
查看>>
多核计算与并发编程(一) 架构篇
查看>>
OC测试错题。。。
查看>>
MAP/REDUCE:1,“先计算再汇总”;2,中间结果;3,全并行;
查看>>