checkbox選中並通過ajax傳數組到后台接收


這次講的是通過復選框,選中,點擊提交,並將值chuan到后台controller。這個應用是比較廣的,什么批量修改,批量添加,授權管理等等,都用到這個。其實這個還是挺簡單的,並沒有想象中的那么難,但我看到不少朋友在此處受挫,當然曾經的我也是如此。現在給大家貼個代碼分享下吧。

本文中使用的是layui框架,當然也可以不引進它,不過jquery的庫還是要的。

該示例環境是spring+springmvc+mybatis plus+jdk8+mysql57+maven3以上+window10(linux也沒問題)

對mybatis plus不了解的,可以參考我的文章MP實戰系列,或者去mybatis plus官網了解。

springmvc不知道的,或者基本使用都有困難的,可以參照我的Java相關框架資料及其基礎資料、進階資料、測試資料之分享 這篇文章,里面有很多資料,小白人員強烈建議參考

當有一定基礎的還是建議看書和去官網看文檔

我現在就時常看書和文檔,官網雖然是英文的,但是現在很多翻譯工具,所以閱讀起來不是特別困難。不過建議有英文基礎的還是要看英文。我自己時常記單詞,嘗試閱讀英文文檔。

test.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>開鎖方式</title>
<link rel="stylesheet" href="../../layui/css/layui.css" media="all">
</head>
<body>
<!-- 隱藏域 -->
<input type="hidden" id="lockNo"/>
<input type="hidden" id="userId"/>

<form class="layui-form" action="#">
    <br/>


  <div class="layui-form-item">
    <label class="layui-form-label">初始開鎖</label>
    <div class="layui-input-block">
      <input type="checkbox" name="first_way" title="人臉識別" value="1" checked="checked">
      <input type="checkbox" name="first_way" title="密碼" value="2" checked="checked">
      <input type="checkbox" name="first_way" title="藍牙" value="3">
      <input type="checkbox" name="first_way" title="NFC" value="4">
    </div>
  </div>

  <div class="layui-form-item">
    <label class="layui-form-label">后續開鎖</label>
    <div class="layui-input-block">
      <input type="checkbox" name="laster_way" title="遠程開鎖" value="1" checked="checked">
      <input type="checkbox" name="laster_way" title="指紋觸摸" value="2" checked="checked">
      <input type="checkbox" name="laster_way" title="其他" value="3">
      <input type="checkbox" name="laster_way" title="其他" value="4">
    </div>
  </div>
<br/>
  <div class="layui-form-item">
    <div class="layui-input-block">
      <button class="layui-btn" id="update">立即提交</button>
    </div>
  </div>
</form>
 



<!-- js -->
<script src="../../js/jquery-1.11.3.min.js"></script>
<script src="../../layui/layui.js" charset="utf-8"></script>
<script src="../../layui/lay/modules/layer.js" type="text/javascript"></script>
<script src="../../layui/lay/modules/form.js"></script>
<script src="../../js/test.js"></script>
</body>
</html>

 

test.js

/**
 * 開鎖方式
 */

  window.onload=function(){  
  
        GetRequest();
        autoLoad();
     
    };  
    
  
    
    //截取URL參數
    function GetRequest() {
          var fullURL = window.location.href;
     
           var url = location.search; //獲取url中"?"符后的字串
           var theRequest = new Object();
     
           if (url.indexOf("?") != -1) {
              var str = url.substr(1);
              strs = str.split("&");
          
              for(var i = 0; i < strs.length; i ++) {
                 theRequest[strs[i].split("=")[0]]=unescape(strs[i].split("=")[1]);
                 
                 $("#lockNo").val(theRequest[strs[i].split("=")[0]]);
                 
              }
           }
           return theRequest;
        }
    
    
  //自動加載獲取Cookie   
    function autoLoad(){
        
        var str ="獲取Cookie";
        $.ajax({
            url:"/lms/userauths/getCookie",
            type:"POST",
            data : {"str":str},
            dataType : 'json',
            success:function(data){
            
            var json = eval("("+data+")");
            
            if(json.returnCode=="200"){
                $("#userId").val(json.userId);
            }else if(json.returnCode=="500"){
                window.location.href='view/Login.html';
            }else{
                alert("有問題,請聯系管理員");
            }
                
            },error:function(){
                alert("失敗");
            }
        });
    }
    
  $(function(){
      
      //修改開鎖方式
     $("#update").click(function(){
         
         var items = [];
         var lockNo = $("#lockNo").val();
         var items2 = [];

         $("input[name='first_way']:checked").each(function() {

             items.push($(this).val());
        
         });
         
         $("input[name='laster_way']:checked").each(function() {

             items2.push($(this).val());
        
         });


         $.ajax({

          type: "post",

          url: "/lms/lock/openLockModify",

          data: {items: items.join(','),items2:items2.join(','),lockNo:lockNo},
          
          dataType : 'json',
          
          async:false,

          success: function(data){
              
             var json = eval("("+data+")");
             if(json.returnCode=="200"){
                 alert(json.returnMsg);
                 closeLayui();
             }else if(json.returnCode=="500"){
                 alert(json.returnMsg);
             }else{
                 alert("有異常,請聯系管理員");
             }
            
          },error:function(){
              alert("有異常");
          }

        });
     
     
     });
  
  
  });
  
  
  //關閉layui彈框
  function closeLayui(){
      parent.layer.closeAll()
 }

 

Controller代碼

    @PostMapping(value="openLockModify")
    public String openLockModify(String lockNo,OpenLockWayQueryVo openLockWayQueryVo) {
        
        logger.info("lockNo:"+lockNo);
        String items[]=openLockWayQueryVo.getItems();
        
        String items2[]=openLockWayQueryVo.getItems2();
        
        String str="";
        
        String str2="";
        
        for (int i = 0; i < items.length; i++) {
            logger.info("itmes:"+items[i]);
            str+=items[i];
        
        }
        
        logger.info("items拼接后為:"+str);
        
        for (int i = 0; i < items2.length; i++) {
            logger.info("items2:"+items2[i]);
            str2+=items2[i];
        }
        
        logger.info("items2拼接后為:"+str2);
        
        EntityWrapper<LockEntity> wrapper = new EntityWrapper<LockEntity>();
        
        wrapper.eq("lock_no", lockNo);
        
        LockEntity lockEntity = lockService.selectOne(wrapper);
        
        //門鎖實體,列出需要更新的屬性
        LockEntity modifyLockEntity = new LockEntity();
        modifyLockEntity.setId(lockEntity.getId());
        modifyLockEntity.setLock_no(lockEntity.getLock_no());
        modifyLockEntity.setUserId(lockEntity.getUserId());
        modifyLockEntity.setFirstOpenWay(str);
        modifyLockEntity.setLasterOpenWay(str2);
        
        boolean isModifyLock = lockService.updateById(modifyLockEntity);
                
        Map<String, Object> map = new HashMap<String, Object>();

        if(isModifyLock) {
            map.put("returnCode", "200");
            map.put("returnMsg", "修改開鎖方式成功");
        }else {
            map.put("returnCode", "500");
            map.put("returnMsg", "修改開鎖方式失敗");
        }    
        return JSON.toJSONString(map);
    }

 

OpenLockWayQueryVo.java
import java.util.Arrays;

public class OpenLockWayQueryVo {
    /**
     * 初次開鎖方式
     */
    String items[];
    
    /**
     * 后續開鎖方式
     * @return
     */
    String items2[];
    
    
    
    
    public String[] getItems2() {
        return items2;
    }

    public void setItems2(String[] items2) {
        this.items2 = items2;
    }

    public String[] getItems() {
        return items;
    }

    public void setItems(String[] items) {
        this.items = items;
    }

    @Override
    public String toString() {
        return "OpenLockWayQueryVo [items=" + Arrays.toString(items) + "]";
    }
    
    
}

 

最后說明,不用mybatis plus單用mybatis也可以,只不過你只需將方法替換成你自己的即可。不過對於開發效率的提升,更好的專注於業務,建議能偷懶不自己寫的,就不自己寫。當然,這也是建立在mybatis用的非常熟練的前提下。如果一點都不熟,建議還是別偷懶了。想當初我也是一個一個的敲出來的,連xml文件都沒有復制粘貼。

 

 
       


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM