学习jquery validate插件方法remote

最近接触到remote方法,有些细节没有掌握好,经过一番的查资料与思考。现在终于知道了这个remote方法的巧妙之处以及细节用法,接下来加以记录。

1、remote方法的接受数据Data

remote的本质是异步ajax,自然接受的数据类型可以跟ajax的类型相同,但是这里remote的源码要求我们当我们默认只需要验证当前元素的值的时候,即可以直接用以下方式

//验证身份证号唯一性
idCard:{
    remote:{
        url: $contextPath + '/xxx/xxx', 
        type: "post",              
        data:{idCard:function(){
            return $('#noid').val();
        }}
        }}
    }
}

其中data接受的格式key/value键值对形式为:name:function(){return $element.val()}就能传入该元素的值

data默认传入的数据形式: element.name: element.vlaue
即: idCrad:xxxxxxxxxxxx

但是我们实际需要传入的key不是元素的name值,则覆盖即可defineKey:function(){return $element.val()}

defineKey:xxxxxxxxxxxxx

2、remote的返回数据处理

remote的返回类型只能是两种,一种是true,一种是false。但是我们的url请求返回的数据如果在service层不将以处理为只能输出这两种形式的话,会造成很大的影响。此时我们需要ajax的dataFilter对原始的返回数据进行预处理操作

//假设后台请求返回的数据为0即为false,不是0就是true
idCard:{
    remote:{
        url: $contextPath + '/xxx/xxx', 
        type: "post",              
        data:{noid:function(){
            return $('#noid').val();
        }},
        dateFilter:function(data,type){
            if(data == 0){
                return false;
            }
            return true;    
        }
        }}
    }
}

dataFilter详细介绍:

  • 类型:Function

  • 给 Ajax 返回的原始数据的进行预处理的函数。提供 data 和 type 两个参数:data 是 Ajax 返回的原始数据,type
    是调用 jQuery.ajax 时提供的 dataType 参数。函数返回的值将由 jQuery 进一步处理。

  • arguments[0] 是 ajax 的原始响应数据,也就是 XHR.responseText,arguments[1] 是 ajax 请求参数中的 dataType ,而这个函数返回的值也就是 success 回调函数中的 responseText。

    扫描二维码关注公众号,回复: 358359 查看本文章

说白了dataFilter就是在success之前对ajax原始数据进行预处理过滤处理,当然它的执行顺序自然而然就会在success之前。那么它的具体应用的情况有哪些呢?我能想到的有以下两种

  • 对后台经过加密之后的数据进行解密,之后success回调传到前端。
  • 实际项目中可以使用当验证通过后进行某些操作,比如我们身份证号码通过了规则验证与唯一性验证之后,我们需要提取其中的出生年月、前六位编码用来填充出生日期与籍贯所在地(但是注意必须要return有返回)。
dateFilter:function(data,type){
    if(data != 0){
        fillOptionArea($('#noid'));//自动填充籍贯下拉框function
        fillOptionBirth($('#noid'));//自动填出生年月下拉框function
        return true;//必须有返回
    }
    return false;//必须有返回    
}

猜你喜欢

转载自blog.csdn.net/mynewclass/article/details/79770758