还是一个简单的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验证的更多相关文章

  1. 11.10 (下午)开课二个月零六天(ajax验证用户名,ajax调数据库)

    用ajax验证用户名是否可用 testuid.php <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN&quo ...

  2. ajax验证表单元素规范正确与否 ajax展示加载数据库数据 ajax三级联动

    一.ajax验证表单元素规范正确与否 以用ajax来验证用户名是否被占用为例 1创建表单元素<input type="text" id="t"> 2 ...

  3. tp框架表单验证 及ajax

    之前的表单验证都是用js写的,这里也可以使用tp框架的验证.但是两者比较而言还是js验证比较好,因为tp框架验证会运行后台代码,这样运行速度和效率就会下降. 自动验证是ThinkPHP模型层提供的一种 ...

  4. easyui 自定义验证规则 验证用户是否已经存在 远程ajax验证

    easyui远程ajax验证 2014年09月30日 22:29:32 clj198606061111 阅读数:6130 标签: easyui 更多 个人分类: jqueryeasyui 版权声明:本 ...

  5. js进阶 14-2 如何用ajax验证登陆状态(这里用load方法)

    js进阶 14-2 如何用ajax验证登陆状态(这里用load方法) 一.总结 一句话总结:$('#test').load('test.php?password=1234560'),这样就get方式提 ...

  6. ASP.NET MVC Model验证(二)

    ASP.NET MVC Model验证(二) 前言 上篇内容演示了一个简单的Model验证示例,然后在文中提及到Model验证在MVC框架中默认所处的位置在哪?本篇就是来解决这个问题的,并且会描述一下 ...

  7. [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 ...

  8. [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 ...

  9. Easyui Ajax验证Form表单。。。

        今天做项目用到easyui Ajax验证表单.本想自定义一个easyui的验证,查资料发现easyui 自带了一个通用的验证!见以下下截图. 后台返回值 true验证通过,返回false验证失 ...

随机推荐

  1. 直接借鉴的 ids拼接

    function _getIds(selectedIds, targetType){ var ids = ""; var $box = targetType == "di ...

  2. 缓慢拒绝服务攻击- slowloris.pl

    How use Slowloris   Requirements: # sudo apt-get update # sudo apt-get install perl # sudo apt-get i ...

  3. websocket 心跳重连

    websocket 的基本使用: var ws = new WebSocket(url); ws.onclose = function () { //something reconnect(); // ...

  4. json序列化时定制支持datetime类型,和到中文让他保留中文形式

    json序列化时,可以处理的数据类型有哪些?如何定制支持datetime类型 自定义时间序列化转换器 import json from json import JSONEncoder from dat ...

  5. OLAP + MDX

    基本概念 维度(Dimension):表示数据的属性,一个维度一般会有一个维表(也可能多个),事实表会有一个字段关联维表. 退化维度:有的维度可以没有维度表,因为这种维度比较简单,没有更多属性,没有必 ...

  6. 关于音频总线IIS的学习---Verilog

    关于音频总线IIS的学习---Verilog 主要思想: 在分析寄存器的值变化的时候,将时钟的边沿分两边来看,边沿之前,边沿之后,在always 块语句里面用来分析判断的寄存器的值,都应该用边沿变化之 ...

  7. Windows下好用的git客户端--GitExtentions

    用git: https://git-scm.com/downloads GitExtentions: https://sourceforge.net/projects/gitextensions/ B ...

  8. NetCore2.0 CodeFirst 解析全国区划信息

    NetCore2.0 数据库:SQLite HTML解析:HtmlAgilityPack 区划数据:http://www.stats.gov.cn/tjsj/tjbz/xzqhdm/201703/t2 ...

  9. 【rocketMQ】之centos6.9安装RocketMQ4.2

    基于最新的RocketMQ4.2版本,搭建2Master模式. 硬件环境:centos6.9_x64(两台虚拟机) IP1:192.168.150.128 IP2:192.168.150.129 1. ...

  10. gradle重复依赖终极方案解决办法

    buildscript { repositories { google() jcenter() } dependencies { classpath 'com.android.tools.build: ...