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验证失 ...
随机推荐
- SpringBoot下如何配置实现跨域请求?
一.什么是跨域请求? 跨域请求,就是说浏览器在执行脚本文件的ajax请求时,脚本文件所在的服务地址和请求的服务地址不一样.说白了就是ip.网络协议.端口都一样的时候,就是同一个域,否则就是跨域.这是由 ...
- Python全栈之路----常用模块学习----模块的种类和导入方法
什么是模块? 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护. 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码 ...
- Json序列化,有多对一和多对多关系时出现的问题
/** * 这是一张 单表中的双向一对多,多对一 关系.自己跟自己一对多多对一 */ @Entity @Table(name="tb_test") public class Cre ...
- 常见模块(三) pickle模块和json模块
(一)json和pickle的区别 1.json是不同编程语言实现数据交换的工具,他是用来把python中的数据对象转换成字符串或者写入文件中的,再由其他语言通过json加载进来. 2.pickle是 ...
- mvn package出现No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK
配置java环境变量时偷懒,没有定义%JAVA_HOME%,应该先定义这个变量,然后在path中新建%JAVA_HOME%\bin和%JAVA_HOME%\jre\bin
- Unreal Engine 4 C++ UCLASS构造函数易出错分析
Unreal Engine 4 C UCLASS构造函数易出错分析 GENERATED_BODY GENERATED_UCLASS_BODY 在Unreal Engine 4的任意类中通常会见到两个宏 ...
- Nginx自动安装脚本
添加一个install_nginx.sh脚本 版本一:(以下脚本为在线自动化安装) #!/bin/bash mkdir /soft cd /soft wget -c http://nginx.org/ ...
- Python 面向对象编程(进阶部分)
静态方法: 通过 @staticmethod 装饰器即可把其装饰的方法变为一个静态方法.普通的方法,可以在实例化后直接调用,并且在方法里可以通过self.调用实例变量或类变量,但静态方法是不可以访问实 ...
- 初识nginx反向代理和缓存机制
实现的需求图: 环境: nginx缓存和反向代理服务器:192.168.0.224 实际存储数据机器:192.168.0.37 一.实现反向代理 1.安装nginx,两台服务器都需要安装 1)安装 ...
- mysql查询中AND与OR注意事项
在查询的where条件中,and要优于or 如果要改变优先级, 需要在最小逻辑判断的条件外加括号(),例如: select * from `table_name` where (`type` = 1 ...