Django_Form验证(二),ajax验证
还是一个简单的html提交页面,ajax提交就不需要form表单了:
<p><input id="a" type="text" name="ac"></p>
<p><input id="p" type="password" name="pwd"></p>
<p><input id="e" type="eMail" name="e"></p>
<p><input id="s" type="submit" value="Ajax提交"></p>
因为是ajax提交,所有就不必考虑刷新保留数据等问题,在js中直接发送数据,获取,然后动态添加就可以了:
<script>
$(function () {
handle_submit()
}) function handle_submit() {
$("#s").click(function () {
//ajax提交
$.ajax({
url:"/fff/Ajax",
data:{"user":$("#a").val(),"pwd":$("#p").val(),"eMail":$("#e").val()},//获取input值
type:"POST",
dataType:"json",
success:function (ret) {
//返回的ret是这种格式: //{"status": false, "error": {"ac": [{"code": "required", "message": "\u7528\u6237\u540d\u4e0d\u80fd\u4e3a\u7a7a"}], "pwd": [{"code": "required", "message": "\u5bc6\u7801\u4e0d\u80fd\u4e3a\u7a7a"}], "eMail": [{"code": "required", "message": "\u7528\u6237\u540d\u957f\u5ea6\u4e0d\u80fd\u4e3a\u7a7a"}]}, "data": "null"}
$(".errorMsg").remove()//每次提交之前先把数据span清除
if (!ret.status){
//循环处理数据,动态生产成span标签
$.each(ret.error,function (k,v) { var mes=document.createElement("span")
mes.className="errorMsg"
mes.innerHTML=v[0].message
$("input[name='"+k+"']").after(mes)
})
}
}
})
})
}
</script>
后台代码:
def Ajax(req):
if req.method == "GET":
return render(req, "Ajaxsubmit.html")
elif req.method == "POST":
obj = Formsubmit(req.POST) # 将得到req.POST信息传递给验证类做参数
status = obj.is_valid()# 这里执行后才验证,验证的信息都存储在obj这个类中
#自定义一个返回的数据类型
ret={
"status":True,
"error":"null",
"data":"null"
}
if not status:
ret["status"]=False
error_data=obj.errors.as_data()
ret["error"]=error_data
return HttpResponse(json.dumps(ret,cls=JsonCustomEncode)) from django.core.exceptions import ValidationError
#查看ValidationError可知道错误数据中包括错误类型code,错误信息message2项,所以转换json的时候返回return {"code":file.code,"message":file.message}
import json
class JsonCustomEncode(json.JSONEncoder):
def default(self,file):
if isinstance(file,ValidationError):
return {"code":file.code,"message":file.message}
else:
return json.JSONEncoder.default(self,file)
Django_Form验证(二),ajax验证的更多相关文章
- 11.10 (下午)开课二个月零六天(ajax验证用户名,ajax调数据库)
用ajax验证用户名是否可用 testuid.php <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN&quo ...
- ajax验证表单元素规范正确与否 ajax展示加载数据库数据 ajax三级联动
一.ajax验证表单元素规范正确与否 以用ajax来验证用户名是否被占用为例 1创建表单元素<input type="text" id="t"> 2 ...
- tp框架表单验证 及ajax
之前的表单验证都是用js写的,这里也可以使用tp框架的验证.但是两者比较而言还是js验证比较好,因为tp框架验证会运行后台代码,这样运行速度和效率就会下降. 自动验证是ThinkPHP模型层提供的一种 ...
- easyui 自定义验证规则 验证用户是否已经存在 远程ajax验证
easyui远程ajax验证 2014年09月30日 22:29:32 clj198606061111 阅读数:6130 标签: easyui 更多 个人分类: jqueryeasyui 版权声明:本 ...
- js进阶 14-2 如何用ajax验证登陆状态(这里用load方法)
js进阶 14-2 如何用ajax验证登陆状态(这里用load方法) 一.总结 一句话总结:$('#test').load('test.php?password=1234560'),这样就get方式提 ...
- ASP.NET MVC Model验证(二)
ASP.NET MVC Model验证(二) 前言 上篇内容演示了一个简单的Model验证示例,然后在文中提及到Model验证在MVC框架中默认所处的位置在哪?本篇就是来解决这个问题的,并且会描述一下 ...
- [LeetCode] Verify Preorder Sequence in Binary Search Tree 验证二叉搜索树的先序序列
Given an array of numbers, verify whether it is the correct preorder traversal sequence of a binary ...
- [LeetCode] Validate Binary Search Tree 验证二叉搜索树
Given a binary tree, determine if it is a valid binary search tree (BST). Assume a BST is defined as ...
- Easyui Ajax验证Form表单。。。
今天做项目用到easyui Ajax验证表单.本想自定义一个easyui的验证,查资料发现easyui 自带了一个通用的验证!见以下下截图. 后台返回值 true验证通过,返回false验证失 ...
随机推荐
- Linux下安装oracle的步骤和一些问题
今天在Linux64位系统安装oracle数据库,折腾了一天,终于搞定了,现在把安装步骤梳理下,防止以后忘记: (以下内容来自http://blog.163.com/junwu_lb/blog/ ...
- 消息队列MQ】各类MQ比较
目前业界有很多MQ产品,我们作如下对比:RabbitMQ 是使用Erlang编写的一个开源的消息队列,本身支持很多的协议:AMQP,XMPP, SMTP, STOMP,也正是如此,使的它变的非常重量级 ...
- linux局域网内挂载其它操作系统目录
一.linux挂载windows 1.windows目录打开共享: 2.mount -t cifs -o username=admin***tor,password=abc //192.168.*** ...
- 面試題之web
1. django和flask框架的区别? django:大而全的全的框架,重武器:内置很多组件:ORM.admin.Form.ModelForm.中间件.信号.缓存.csrf等 flask: 微型框 ...
- bootstrap弹出模态框会给body加padding的解决方法
bootstrap弹出模态框会给body加padding,导致页面缩放的解决方法: 在页面或是css文件里加上($paddingSize为less变量,需要改成像素或是其他单位,如12px,1rem) ...
- set_false_path的用法
set_false_path的用法 非功能性路径,因为两个多路选择器被相同的选择信号驱动? 上电复位信号 set_false两个异步时钟域的路径 在两个时钟域之间,设置set_false_path,应 ...
- 2、php中字符串单引号好和双引号的区别
使用单引号和双引号的主要区别是:单引号定义的字符串中出现的变量和转义序列不会被变量的值代替,而双引号中使用变量名会显示该变量的值.
- Optaplanner - 从探究示例中的hello world,初步认识规划引擎的运行步骤。
上一篇我们成功以把Opotaplanner规划引擎下载回来,并把它的示例运行起来,简单解析了一下它的Cloud balance示例.这一篇我们这些示例的源代码导入到Eclipse中,看看它在后台是怎么 ...
- TCP/IP学习20180630-数据链路层-router choose
IP路由选择 当一个IP数据包准备好了的时候,IP数据包(或者说是路由器)是如何将数据包送到目的地的呢?它是怎么选择一个合适的路径来"送货"的呢? 最特殊的情况是目的主机和主机直连 ...
- windows server系统查看tomcat版本
线上服务器系统是windows server版本,由于tomcat进行了apache httpd集群,所以对tomcat进行了统一编号: 在jprofiler中需要监听一个server实例,需要先搞清 ...