Ajax简单运用(JavaScript-----jQuery-------)
首先引用 jQuery
<script src="https://ajax.aspnetcdn.com/ajax/jquery/jquery-3.4.1.min.js"></script>
写一个简单的表单


<form id="f1" method="POST" action="/form_login/">
{% csrf_token %}
<p>用户:<input id="title_1" type="text" name="username"/></p>
<p>密码:<input type="password" name="password"/></p>
<p><input type="submit" name="提交">{{message}}</p>
<a onclick="abc()">提交</a> {# 点击链接到JavaScript函数 #}
</form>
相关视图函数


1 from django.forms import Form,fields,widgets
2 class FormLogin(Form):
3
4 username=fields.CharField(min_length=6,max_length=18,required=True,
5 error_messages={
6 'required':'用户名不能为空',
7 'min_length':'最小长度为6',
8 'max_length':'最大长度18',
9 }
10 )
11 #里面就包含了正则验证:不能为空、6-18
12 #这个要html里面的name属性一样
13 #写几个就验证几个规则
14 password = fields.CharField(min_length=6, max_length=18, required=True,
15 error_messages={
16 'required': '密码不能为空',
17 'min_length': '最小长度为6',
18 'max_length': '最大长度18',
19 }
20 )
21 # t1 = fields.IntegerField # 数字正则表达式
22 # t2 = fields.EmailField() # 邮箱正则表达式
23 # email=fields.GenericIPAddressField() #IP正则表达式


def form_login_ajax(request):
import json
ret={'status':True, 'msg':None} #有个状态,方便后面判断
obj = FormLogin(request.POST)
if obj.is_valid(): # 去匹配
print(obj.cleaned_data) # 正确的信息
#return redirect('http://www.baidu.com')
else:
print(obj.errors) # v=json.dumps(obj.errors,ensure_ascii=False)#通过json 对它序列化
# print(v)
ret['status']=False
ret['msg']=obj.errors #obj.errors是个字典
v=json.dumps(ret,ensure_ascii=False) #为了能打印出来
print(v)
return HttpResponse(v) #也能返回render(本质还是HttpResponse),但是这里返回这个比较好,弄个json.domp字典返回最好 # return render(request, 'form_login.html', {'obj': obj, 'user': user, 'pwd': pwd})
#完成验证和提示错误,但是无法保留Form表单上次输入内容
发送Ajax请求和接受视图函数返回的数据并且处理


<script> function abc(){
$('.c1').remove(); //(jQuery 类选择器)
$.ajax(
{
url:'/form_login_ajax/',
type:'POST',
data:$('#f1').serialize(), dataType:"JSON", //将序列化的json转化为对象
success:function(data){
console.log(data);
console.log(data.status); //status是后台传过来的字典的key
if(data.status){ //若是提交成功的话
alert('提交成功')
$("#f1").hide();//皮一下,输入成功后,输入框消失(jQuery id选择器)
}else{
$.each(data.msg,function(index,value){ //对data.msg进行循环
console.log(index,value); //取其index(key),value
var tag=document.createElement('span'); //创建一个名为tag的span标签
tag.innerHTML=value[0]; //取value第一个值
console.log(value[0]);
console.log(tag);
tag.className='c1'; //给标签加一个样式 目的:等到下次来的时候给它删除(避免累加提示错误)
$('#f1').find('input[name="'+index+'"]').after(tag); //input[name=" user "]' ,不能有多余的空格
//找到id为f1的表格,下面找到input name=x,加入tag标签
})
} } })
} </script>
ps:
问题待补充:
jQuery 三大选择器 除了能 .remove() .hide() 还能.什么,哪里可以查到相关的全部
Ajax简单运用(JavaScript-----jQuery-------)的更多相关文章
- Jquery Ajax简单封装(集中错误、请求loading处理)
Jquery Ajax简单封装(集中错误.请求loading处理) 对Jquery Ajax做了简单封装,错误处理,请求loading等,运用到项目中集中处理会很方便. 技术层面没有什么好说的,请求是 ...
- 前端(十七)—— jQuery基础:jQuery的基本使用、JQ功能概括、JS对象与JQ对象转换、Ajax简单应用、轮播图
jQuery的基本使用.JQ功能概括.JS对象与JQ对象转换.Ajax简单应用.轮播图 一.认识jQuery 1.什么是jQuery jQuery是对原生JavaScript二次封装的工具函数集合 j ...
- jquery ajax post, get, javascript ajax post, get 处理
ajax 创建 XMLHttp 对象IE7 以上的版本都支持 XMLHttpRequestIE7 以下的用 ActiveXObject async:true, // 当false 时,当执行完这个才 ...
- javascript AJAX简单原理及什么是ajax
AJAX简单原理供初学者理解 AJAX的原理: Ajax的原理简单来说通过XmlHttpRequest对象来向服务器发异步请求,从服务器获得数据,然后用javascript来操作DOM而更新页面.这其 ...
- 经验分享:10个简单实用的 jQuery 代码片段
尽管各种 JavaScirpt 框架和库层出不穷,jQuery 仍然是 Web 前端开发中最常用的工具库.今天,向大家分享我觉得在网站开发中10个简单实用的 jQuery 代码片段. 您可能感兴趣的相 ...
- 原生态AJAX详解和jquery对AJAX的封装
AJAX: A :Asynchronous [eI`sinkrenes] 异步 J :JavaScript JavaScript脚本语言 A: And X :XML 可扩展标记语言 AJAX现在 ...
- ajax请求原理及jquery $.ajax封装全解析
.ajax原理: Ajax的原理简单来说通过XmlHttpRequest对象来向服务器发异步请求,从服务器获得数据,然后用javascript来操作DOM而更新页面.这其中最关键的一步就是从服务器获得 ...
- 第18天 ajax技术和javascript加强(json)
第18天 ajax技术和javascript加强(json) 复习: B/S架构实现文件上传的思路? 使用a标签实现文件下载功能,有什么问题? 使用Servlet实现文件下载的思路? 今日任务 ...
- ajax简单手写了一个猜拳游戏
使用ajax简单写一个猜拳游戏 HTML代码 <!DOCTYPE HTML> <html lang="en-US"> <head> <me ...
- Handlebars的基本用法 Handlebars.js使用介绍 http://handlebarsjs.com/ Handlebars.js 模板引擎 javascript/jquery模板引擎——Handlebars初体验 handlebars.js 入门(1) 作为一名前端的你,必须掌握的模板引擎:Handlebars 前端数据模板handlebars与jquery整
Handlebars的基本用法 使用Handlebars,你可以轻松创建语义化模板,Mustache模板和Handlebars是兼容的,所以你可以将Mustache导入Handlebars以使用 Ha ...
随机推荐
- 麒麟系统开发笔记(二):国产麒麟系统搭建Qt开发环境安装Qt5.12
前言 开发国产应用,使用到银河麒麟V4,V10,本篇以V10记录,参照上一篇可安装V4.V7.V10三个版本,麒麟V4系自带了Qt,麒麟V10没有自带Qt,需要自己编译搭建环境. 银河麒麟V1 ...
- Idea集成CSSO插件压缩css文件
首先需要本地已安装node环境,并且csso-cli已通过npm安装到本地目录,只要能找到就行. 1. 打开Settings配置,确认图中的 File Watchers 插件是否已存在,如果不存在,去 ...
- WeakHashMap 是怎么工作的?
WeakHashMap 的工作与正常的 HashMap 类似,但是使用弱引用作为 key,意思就是当 key 对象没有任何引用时,key/value 将会被回收.
- C++多态例子_虚函数
#include<iostream> using namespace std; class parent { public: virtual void fun() { cout <& ...
- Thymeleaf+Spring使用自己的工具类
第一种.提供思路,继承SpringStandardDialect,重写getExpressionObjectFactory方法,设置expressionObjectFactory的实际对象,并在Tem ...
- Python - 异常处理初步
- IE中的编码位置
进入设置 找到Editor 找到File Encodings
- i2c总线编码
i2c总线编码 发送启动信号S 在同步时钟线SCL 为高电平时,数据线出现的由高到低的下降沿. 启动信号子程序STA 1 /************************************** ...
- 180度\360度sg90舵机的使用及代码程序
大部资料都是在网上找到网友大神所共享的,在网上找了几种舵机的,刚接触有点懵,之后找得多了就理解了,想要控制一个硬件就要先了解这个硬件.这里有介绍180度舵机和360度舵机的具体使用,有网上大神的程序, ...
- Numpy计算逆矩阵求解线性方程组
对于这样的线性方程组: x + y + z = 6 2y + 5z = -4 2x + 5y - z = 27 可以表示成矩阵的形式: 用公式可以表示为:Ax=b,其中A是矩阵,x和b都是列向量 逆矩 ...