在用jquery.validate.js做输入验证中,用到了对某个字段重复性的判断,就是在某字段的验证中使用remote进行输入时用ajax不断向后台发送请求,但是奇怪的是,在你在data:{}中用name作为属性名,传到后台时,值丢了!?是的值没了,用的post方法,formdata里该属性为空,所以就无法进行验证了.解决方法就是改一下前台的属性名,可能jquery.validate这个插件的name是个关键字,不可以作为ajax的数据属性值。

---------------------------------2017-11-27-------------------------------------------------------

  我上述的推测是错误的,如果误导了一些朋友深感抱歉。与同事仔细探究了一番才发现,对某个input用remote输入验证时,不需要在data属性中指定这个input的value,因为源码中已经自动获取了该input的nam与value,并在封装的ajax中作为data中的参数传到后端,所以如果仅仅只是对此字段验证的话,data中可以什么都不需要写。

  下面是源码中对remote的描述:

 remote: function (value, element, param)//element指input的dom元素,value是被验证的值,param是remote对象
{
if (this.optional(element))
return "dependency-mismatch"; var previous = this.previousValue(element);
if (!this.settings.messages[element.name])
this.settings.messages[element.name] = {};
previous.originalMessage = this.settings.messages[element.name].remote;
this.settings.messages[element.name].remote = previous.message; param = typeof param == "string" && { url: param} || param; if (this.pending[element.name])
{
return "pending";
}
if (previous.old === value)
{
return previous.valid;
}//缓存设置 previous.old = value;
var validator = this;
this.startRequest(element);
var data = {};
data[element.name] = value;//这一步就是将dom元素的name和value作为data中的参数
$.ajax($.extend(true, {
url: param,
mode: "abort",
port: "validate" + element.name,
dataType: "json",
data: data,
success: function (response)
{
validator.settings.messages[element.name].remote = previous.originalMessage;
var valid = response === true;
if (valid)
{
var submitted = validator.formSubmitted;
validator.prepareElement(element);
validator.formSubmitted = submitted;
validator.successList.push(element);
validator.showErrors();
} else
{
var errors = {};
var message = response || validator.defaultMessage(element, "remote");
errors[element.name] = previous.message = $.isFunction(message) ? message(value) : message;
validator.showErrors(errors);
}
previous.valid = valid;
validator.stopRequest(element, valid);
}
}, param));//这里将默认参数与我们在remote中写的参数进行合并,相同的属性后者覆盖
return "pending";
} 

最新文章

  1. log4j配置文件加载
  2. Reprint: ADB is Not Recognized as an internal or external command Fix
  3. box-shadow
  4. 使用xib创建cell时 bug
  5. 说说设计模式~桥梁模式(Bridge)
  6. Django笔记-数据库操作(多对多关系)
  7. ios开发中的Swift面向对象
  8. UVALive 5880 Vigenère Cipher Encryption (模拟)
  9. 20151212jquery学习笔记--工具函数
  10. Sumbline编译Less
  11. Linux搭建SVN 服务器
  12. hdu 4284 状态压缩
  13. java_annotation_02
  14. 在一个exe文件中查找指定内容,找到则返回起始位置, 否则返回0
  15. [转]使用ping钥匙临时开启SSH:22端口,实现远程安全SSH登录管理就这么简单
  16. php session 和cookie
  17. java异常——Exception、RuntimException
  18. MySQL登录报错ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
  19. django 增加自定义权限的一个博客,讲的很详细
  20. mysql学习笔记--列属性

热门文章

  1. JavaScript中继承的实现方法--详解
  2. [UWP]为番茄钟应用设计一个平平无奇的状态按钮
  3. python手册学习笔记3
  4. keeplived离线安装openssl-devel依赖包
  5. T-SQL Part IV: ORDER BY
  6. PHP程序员-常用工具
  7. [ISE使用] 使用ISE的过程中,遇到过的一些“软件上的问题”
  8. Mongodb自动备份数据库并删除指定天数前的备份
  9. 微擎 pdo_fetchall() 函数
  10. epoll介绍及使用