後端ajax異步請求的使用

封裝——是衡量是否簡潔的重要標準

最近作一個白名單,給用戶依據商戶號添加使用。可是在添加以前要去判斷是否是已經存在,若是存在的話,就要給前臺返回信息,若是不存在就要有提示。
html

jsp總體使用from提交,關因而否存在的提示則使用ajax異步提交。前端

首先,給相關的字段添加一個onblur事件:ajax

1 <td nowrap="nowrap">
2         <span><input id="enterCode" name="enterCode" class="form-control" type="text" onblur="chechEnterCode()"/></span>
3         <font id="enterCodeMsg"></font>
4 </td>

對應的js代碼以下:數據庫

function chechEnterCode(){
    var enterCode = $("#enterCode").val();
    $.ajax({
        url : "paymentsetting.do?method=checkEnterCode",
        dataType : "json",
        type : "post",
        data : {"enterCode" : enterCode},
        success : function(json){
            if("false" == json.ret){
                $("#enterCodeMsg").html("該商戶不存在!");
                $("#enterName").val("");
                $("#orgNo").val("");
                $("#orgNm").val("");
            }
            else if("true" == json.ret){
                $("#enterCodeMsg").html("");
                $("#enterName").val(json.ENTER_NAME);
                $("#orgNo").val(json.ORG_NO);
                $("#orgNm").val(json.ORG_NM);
            }
        }
    })
}

在controller層代碼以下:json

 1 /**
 2      * 
 3     * 【根據商戶號反饋商戶名、所屬機構信息】
 4     * @param request
 5     * @param response
 6     * @param enterCode
 7      */
 8     @RequestMapping(params = "method=checkEnterCode")
 9     public void checkEnterCode(HttpServletRequest request,HttpServletResponse response, String enterCode){
10         try {
11             Map map = (Map) paymentSettingServer.findEnterByEnterCode(enterCode);
12             if(null == map){
13                 map = new HashMap<>();
14                 map.put("ret", false);
15             }
16             else{
17                 map.put("ret", true);
18             }
19             String json = JsonUtil.map2json(map);
20             responseMessage(response,json);---------------------------》轉註
21         } catch (Exception e) {
22             e.printStackTrace();
23         }
24     }

注:此處將全部的往前端寫值的方法封裝在一個類中:app

1 protected void responseMessage(HttpServletResponse response, String message)
2             throws IOException {
3         LogUtil.MSG.debug(message);
4         response.setContentType("text/html;charset=UTF-8");
5         PrintWriter out = response.getWriter();
6         out.write(message);
7     }

 

controller層調用接口(server)以下:框架

1 /**
2      * 
3     * 【根據商戶號獲取商戶信息】
4     * @param enterCode
5     * @return
6      */
7     public Object findEnterByEnterCode(String enterCode);

接口的實現以下:異步

 1 @Override
 2     public Object findEnterByEnterCode(String enterCode) {
 3         try {
 4             return paymentsettingServiceImpl.findEnterByEnterCode(enterCode);
 5         } catch(BizException ex) {
 6             LogUtil.MSG.error(ex.getMessage());
 7             throw ex;
 8         } catch(Exception ex) {
 9             LogUtil.ERROR.error(ex,ex);
10             throw new BizException(ex.getMessage());
11         }
12     }

服務層的代碼以下:jsp

1 public Object findEnterByEnterCode(String enterCode) {
2         try {
3             return paymentsettingDaoImpl.findEnterByEnterCode(enterCode);
4         } catch (Exception e) {
5             LogUtil.ERROR.error("校驗商戶號發生異常:" + e.getMessage());
6             throw new BizException("校驗商戶號發生異常", e);
7         }
8         
9     }

dao層代碼以下(此處使用的是hibernate框架):ide

 1 public Object findEnterByEnterCode(String enterCode) {
 2         QueryHelper helper = new QueryHelper();
 3         helper.append("select ep.ENTER_CODE,ep.ENTER_NAME,cm.ORG_NO,cm.ORG_NM ");
 4         helper.append(" from T_ENTERPRISE ep "
 5                 + " left join CMMTINORG cm  on ep.ORGANIZATION = cm.ORG_NO ");
 6         helper.append(" where ep.ENTER_CODE = ?",enterCode);
 7         List list = super.getListBySql(helper, Transformers.ALIAS_TO_ENTITY_MAP);
 8         if(list.size() == 1){
 9             return list.get(0);
10         }
11         else{
12             return null;
13         }
14     }

不存在的情形(直接去數據庫查詢而後給出提示):

存在的情形(查詢出對應的數據而且填充):

相關文章
相關標籤/搜索