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验证失 ...
随机推荐
- Java线程及线程池状态
一.Java线程的六种状态 如上图1,JDK定义线程状态是不存在“运行中”状态,但为方便描述过程有些图中会画出运行中的状态. Java线程创建后调用start方法进入就绪状态,被OS调度选中后运行,运 ...
- HTTP各种特性
一.Http客户端 1.浏览器.打开百度首页 2.Curl工具 二.CORS 跨域(浏览器的功能) 1.修改Server.js const http = require('http'); const ...
- Linux之文件(目录)默认权限、特殊权限与隐藏权限
文件默认权限 从Linux之用户组.文件权限详解了解到文件与目录的基本权限管理,文件在创建时如果不指定具体的权限,那么系统会给它分配一个默认的权限,这个默认权限就是umask. vbird@Ubunt ...
- HTTP客户端/服务端 POST/GET
获取GET请求内容 实例 //引入模块var http=require('http');var urls=require('url');var util=require('util');//创建服务h ...
- shutil 拷贝 / 移动 / 压缩 / 解压缩
# shutil_demo.py 高级文件操作(拷贝 / 移动 / 压缩 / 解压缩) import shutil def shutil_demo(): # 拷贝文件 shutil.copy2('fi ...
- 算法实践--最长公共子序列(Longest Common Subsquence)
什么是最长公共子序列 X=ACCG Y=CCAGCA 长度为1的公共子序列: {A} {C} {G} 长度为2的公共子序列:{AC} {CC} {CG} {AG} 长度为3的公共子序列:{ACG} 长 ...
- python读取指定字节长度的文本
软件版本 Python 2.7.13; Win 10 场景描述 1.使用python读取指定长度的文本: 2.使用python读取某一范围内的文本. Python代码 test.txt文本内包含的 ...
- 铁板纹理 铁锈Rust
软件:Substance Designer 2017.1.2 这篇文章记录铁锈的制作方法,铁锈效果见图一 图一:铁锈Rust 铁锈的具体制作过程为: 使用BnW Spots 2(Noise)结点生成噪 ...
- ssh免密钥之上厕所
ssh服务简单介绍 SSH协议框架中最主要的部分是三个协议: *传输层协议(The Transport Layer Protocol)提供服务器认证,数据机密性,信息完整性等的支持; *用户认证协议( ...
- Numpy学习笔记(一)
(1)NumPy的核心对象 ndarray 用于表示N 维数组类型.它描述相同类型的元素集合. 可以使用基于零的索引访问集合中的项目. (2)Ndarray的创建 可以使用numpy.array() ...