溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

常規(guī)操作下的JS代碼備份2

發(fā)布時(shí)間:2020-06-14 00:30:36 來源:網(wǎng)絡(luò) 閱讀:723 作者:警鐘長(zhǎng)鳴 欄目:web開發(fā)

目的: 表單提交,針對(duì)某個(gè)字段做唯一性校驗(yàn)

 

常規(guī)操作下的JS代碼備份2

前臺(tái)做法:就是在點(diǎn)擊提交按鈕的時(shí)候,對(duì)字段做校驗(yàn),其中涉及到 identity唯一性校驗(yàn)的時(shí)候,通過調(diào)用方法checkIdentifyIsChongFu異步請(qǐng)求后臺(tái),此時(shí)應(yīng)該注意必須使用 必須使用 $.ajax({ 請(qǐng)求后臺(tái),因?yàn)橹挥写朔椒梢詫⒃O(shè)置 JS請(qǐng)求方式為同步,即只有在checkIdentifyIsChongFu方法中獲取的flag只有在執(zhí)行完 $.ajax({里面的后臺(tái)請(qǐng)求和里面的賦值邏輯后才返回,否則的話比如不用$.ajax({ 還是用 $.post(方式,那么 checkIdentifyIsChongFu方法會(huì)先將flag的默認(rèn)值返回給addCataFun(),讓addCataFun()處理,然后checkIdentifyIsChongFu再調(diào)用自己的post方式走到后臺(tái)做自己post里面的function賦值,然后再將flag返回addCataFun()。

// 同級(jí)下保存按鈕對(duì)應(yīng)的JS函數(shù)   
    function addCataFun() {
        // 1 通過post方式提交表單
        var name = $("#name").val();
        var orderNo = $("#orderNo").val();
        var keyWord = $("#keyWord").val();
        var identify = $("#identify").val();
        var pid = $("#pid").val();
        var level = $("#level").val();
        var catalogIdNew = $("#catalogIdNew").val();
        var catalogId = $("#catalogId").val();
        //var endValue = $("radio:checked").val();
        var endValue = $("input:checked").val();
        var addType = $("#addType").val();
       
        name = name.replace(/^\s+|\s+$/g,"");
        identify = identify.replace(/^\s+|\s+$/g,"");
        orderNo = orderNo.replace(/^\s+|\s+$/g,"");
        if(name == "") {
            alert("類目名稱不能為空");
        }else if(identify == ""){
            alert("內(nèi)部名不能為空");
        }else if(checkIdentifyIsChongFu(identify)) {
           
            alert("內(nèi)部名重復(fù),請(qǐng)換一個(gè)");
        }else if(orderNo == "") {
            alert("順序號(hào)不能為空");
        }else if(!checkNum(orderNo)){
            alert("順序號(hào)必須為正整數(shù)");
        }else{
        $.post('<c:url value="/catalog!addorUpdateCata"/>', {name:name,orderNo:orderNo,keyWord:keyWord,identify:identify,pid:pid,level:level,catalogIdNew:catalogIdNew,endValue:endValue,addType:addType,catalogId:catalogId},
               function(data){
                   $('#first').html(data);// 更新 添加類目的div數(shù)據(jù)
                   //alert($("#catalogIdNew").val()) ;
                   if($("#catalogIdNew").val()) {
                       document.getElementById('catalogparagEidtID').style.display = "";// 段落內(nèi)容編輯按鈕顯示出來
                    //document.getElementById('catalogparagEidtID').enabled = "true"; // 段落內(nèi)容編輯按鈕為可點(diǎn)擊狀態(tài)
                   }
               },
               'html');
       }
    }
    // 驗(yàn)證 添加類目的內(nèi)部名稱是否重復(fù)
    function checkIdentifyIsChongFu(identify){
           var flag;
           $.ajax({
                url : '<c:url value="/catalog!checkIdentify"/>',
                type : 'post',
                async: false,//使用同步的方式,true為異步方式
                data : {identify:identify},//這里使用json對(duì)象
                dataType : 'json',
                success : function(data){
                //code here...
                  var obj = eval(data);
                  if(obj.status == "1"){
                    flag = false;
                    }else{
                        flag = true;
                    }
                },
          });
        return flag;
    }

A2: 后臺(tái)的操作代碼:

    // 根據(jù)字符串輸出JSON,返回null
    public String ajaxJson(String jsonString) {
        return ajax(jsonString, "text/html");
    }
   
    // AJAX輸出,返回null
    public String ajax(String content, String type) {
        try {
            HttpServletResponse response = ServletActionContext.getResponse();
            response.setContentType(type + ";charset=UTF-8");
            response.setHeader("Pragma", "No-cache");
            response.setHeader("Cache-Control", "no-cache");
            response.setDateHeader("Expires", 0);
            response.getWriter().write(content);
            response.getWriter().flush();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }
   

    /**
     * 獲取某類目下所有段落數(shù)據(jù)后在DIV中展示
     */
    public String cataParagPreview() {
        Map map = new HashMap();
        List list = new ArrayList();
        logger.info("到達(dá)CatalogController::cataParagPreview()方法的類目主鍵為: " + catalogIdNew);
        if(validateNotEmpStr(catalogIdNew)) {
            // 獲取類目下所有段落
            CatalogParagClient client = new CatalogParagClient();
            CatalogParagSelector selector = new CatalogParagSelector(1,100,Constants.SORT_TYPE_ASC,Constants.SORT_BY_ORDERNO,catalogIdNew,null,null);
            selector.setSelectType(Constants.SL_LIST);

            CatalogParagResponse resp = client.get(selector);
            int status = resp.getStatus();
            if(status == Constants.SUCCESS) {
                //this.parag.getTilte()
                parags = resp.getParags();
                if(parags != null && parags.size() > 0) {
                    for(int i=0; i< parags.size(); i++) {
                        list.add(new ParagWeb(i+1,parags.get(i).getTilte(),parags.get(i).getContent()));
                    }
                }
            }
            map.put("parags", list);
           
        }
       
        JSONObject jsonObject = (JSONObject) JSONSerializer.toJSON(map);
        return ajaxJson(jsonObject.toString());
    }

 

其實(shí)還有另一種做法:

前臺(tái)JS:

var url = '<c:url value="/attribute!checkExistAttribute" />';
    $.post(url, data, function(status){     他后臺(tái)就沒有用json,而是將return "_callback/ajax4checkExistStatus";然后再這個(gè)頁面中通過 ${statusCode}接受
            if ($.trim(status) == 200) {  這樣的話 返回的數(shù)值就是 ${statusCode}了。即 function(status)的status = ${statusCode};了。
                pageAction(code);
            } else if ($.trim(status) == 401) {
                alert('名稱已存在!');
            } else if ($.trim(status) == 402) {
                alert('別名標(biāo)識(shí)已存在!');
            } else if ($.trim(status) == 403) {
                alert('名稱和別名標(biāo)識(shí)已存在!');
            }
        });

 

后臺(tái)代碼:

    /**
     * 判斷屬性是否已存在
     * @return
     */
    public String checkExistAttribute() {
        AttributeClient client = new AttributeClient();
        AttributeSelector selector = new AttributeSelector(catalogId, Constants.ASSIST_QUERY_EXSIT, new AssistParam(attr.getLabel(), attr.getAlias(), null));
        AttributeResponse response = client.getAssistInfo(selector);
        this.statusCode = response.getStatus();
        return "_callback/ajax4checkExistStatus";
    }

 

而返回的頁面中 只有 ${statusCode} 這行代碼,即后臺(tái)僅僅返回一個(gè)statusCode數(shù)據(jù),返回到頁面也只有這個(gè)數(shù)據(jù),然后再前臺(tái)中 $.post(url, data, function(status){   其中 function(status)中的status就是返回的數(shù)據(jù),也就是statusCode。 貌似這個(gè)方式更巧妙。。。。

 

B ; isNaN() 函數(shù)用于檢查其參數(shù)是否是非數(shù)字值。

比如

<script type="text/javascript">

document.write(isNaN(0)+ "<br />")   true
document.write(isNaN("Hello")+ "<br />") false

</script>

 

C: query將字符串去掉前后空格 有自帶的方法,

function testTrim(){
        alert($.trim('  sdfs ').length);
       
    }

以前一直用  identify = identify.replace(/^\s+|\s+$/g,"");去做的

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI