Djangoform表单Ajax控制跳转
需求:
1:在登陆页面输入账号密码后,ajax异步提交数据给后端验证。
2:验证通过后,后端指定跳转页面,并把页面封装进返回的Json数据中,由ajax控制from表单跳转到目标页面
一:登陆页面HTML代码
页面的跳转主要通过ajax控制form表单的action动作完成。因此如果action属性有url,那么后端不指定跳转页面的话,会默认跳转此页面,下面代码中,默认跳转到home页面
另外需要注意的是:利用submit()跳转页面,点击的按钮的type是button(网上还有其他跳转方法,但是我没有实现过,目前就这种方法成功完成过form表单下ajax控制跳转)
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<link rel="stylesheet" href="/static/bootstrap-3.3.7/css/bootstrap.min.css">
<title>Document</title>
</head>
<body>
<div class="container">
<div class="row" style="margin-top: 100px">
<form id = "myform" class="form-horizontal" action="/home/" method="get">
{% csrf_token %}
<div class="form-group">
<label class="col-sm-4 control-label">用户名</label>
<div class="col-sm-4">
<input type="text" class="form-control" name="username" placeholder="用户名">
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label">密码</label>
<div class="col-sm-4">
<input type="password" class="form-control" name = 'pwd' placeholder="密码">
</div>
</div> <div class="form-group">
<div class="col-sm-offset-4 col-sm-4">
<button type="button" class="btn btn-default">登陆</button>
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-4 col-sm-4">
<span>hello world</span>
</div>
</div>
</form>
</div>
</div>
<script src="/static/jquery-3.3.1.min.js"></script>
<script src="/static/bootstrap-3.3.7/js/bootstrap.min.js"></script>
<script src="/static/setupAjax.js"></script>
<script src ='/static/sweetalert'></script>
</body>
</html>
二:后端login视图文件
def login(request):
if request.method == 'POST':
username = request.POST.get('username')
pwd = request.POST.get('pwd')
user = authenticate(username=username, password=pwd)
if user:
# 验证成功
login(request, user)
# 编辑的json数据,其中的url可以根据需求制定
data = {'code': 1, 'url': 'http://www.baidu.com'}
else:
# 验证失败,返回错误原因
data = {'code': 0, 'msg': '用户名或密码错误'}
return JsonResponse(data)
return render(request, 'login.html')
三:Js代码
逻辑分析:
1:点击事件发生后,获取输入框数据并发送给后端
2:对取到的数据做判断,验证成功则把后端指定的url赋值给form表单的action属性,最后控制form表单执行跳转。验证失败则弹出提示信息
<script>
$(':button').on('click',function () {
var username = $(':text').val();
var pwd = $(':password').val();
var $form = $('#myform');
$.ajax({
url:'/login/',
type:'post',
data:{username:username,pwd:pwd},
success:function (data) {
if (data.code){
$form.attr('action',data.url);
console.log($form.attr('action'));
$form.submit()
}else {
alert(data.msg)
}
}
})
})
</script>
Ajax跳转页面,可以不用form表单包裹input框,直接用div标签包裹就可以。然后,提交数据的绑定按钮其类型必须是type=button,一定要写完整。另外ajax提交数据需要携带csrf-token,写在form表单中是没有效果的。
Djangoform表单Ajax控制跳转的更多相关文章
- form表单提交图片禁止跳转
问题: 最近在做项目时,遇到上传图片需求,且在不跳转的情况下获取到返回信息 思路: 1. 使用ajax发送异步请求,经多次测试,最终以失败告终 2. iframe 禁止跳转(未尝试) 3. 修改fo ...
- js 表单验证控制代码大全
js表单验证控制代码大全 关键字:js验证表单大全,用JS控制表单提交 ,javascript提交表单:目录:1:js 字符串长度限制.判断字符长度 .js限制输入.限制不能输入.textarea 长 ...
- Form提交表单页面不跳转
1.设计源码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www. ...
- php form表单ajax上传图片方法
form表单ajax上传图片方法 先引用jquery.form.js 前台代码<pre><form id="form1"> <input id=&qu ...
- ajax提交表单,包括跳入的坑!
本来今天上午写了一个js执行上下文的一个了解.但是写一大半的时候出去有事,电脑关了啥都没了. 还是让我们进入正题 ajax提交表单,很简单,原生js的代码太复杂,我们就jq的去写. 创建html文件, ...
- form表单ajax提交
这里下面有两种 第一种是form表单里面添加了数据,并且含有上传的图片,第二种是from表单中不含有图片 只有普通数据 第一种form表单中包含有图片的类型: <form method=&q ...
- easy ui 表单ajax和from两种提交数据方法
说明: ①ajax在表单提交时需要将所有表单的控件的数据一一获取并赋值传到后台 ②form在提交时,只要给控件加name属性,在提交时就可以将表单数据提交到后台,不需要一一获取再进行赋值. ajax ...
- from表单实现无跳转上传文件,接收页面后台数据。
本文基于我刚写的http://www.cnblogs.com/iwang5566/p/6287529.html进行了简单的扩展,实现页面无跳转表单数据提交,并接收后台返回的数据. 下载好,上一篇文章d ...
- 织梦自定义表单ajax提交范例
function add_ajaxmessage(){ var dh = document.getElementById("tel"); //表单验证 if($("#te ...
随机推荐
- [微软官网] SQLSERVER 执行页面还原
执行页面还原 https://docs.microsoft.com/zh-cn/previous-versions/sql/sql-server-2008-r2/ms175168(v=sql.105) ...
- robotium学习及整理
一. Robotium 简介 Robotium是一款国外的Android自动化测试框架,主要针对Android平台的应用进行黑盒自动化测试,它提供了模拟各种手 ...
- html template & iframe
html template & iframe https://bbs.csdn.net/topics/390123946 据说可以利用某些浏览器bug绕过跨域限制,可以也研究下; 由于浏览器对 ...
- JavaScript本地存储实践(html5的localStorage和ie的userData)
http://www.css88.com/archives/3717 JavaScript本地存储实践(html5的localStorage和ie的userData) 发表于 2011年06月11日 ...
- HDU4641_K-string
若它的一个子串出现的次数不少于K次,那么这个子串就是一个K-string. 现给出原串,每次可以向该串后面添加一个字符或者询问当前有多少个不同的K-string. 在线添加查询,解法直指SAM. 其实 ...
- struts2针对mvc的框架 spring针对解耦与事务的框架
struts2针对mvc的框架 spring针对解耦与事务的框架
- 使用URLConnection发送http请求实现简单爬虫(可以配置代理)
import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import jav ...
- 小Z的袜子(hose) HYSBZ - 2038 (莫队算法)
原文地址:http://hzwer.com/2782.html 「BZOJ2038」[2009国家集训队] 小Z的袜子(hose) 2014年4月26日13,34721 Description 作为一 ...
- unable to create new native thread
一.认识问题: 首先我们通过下面这个 测试程序 来认识这个问题:运行的环境 (有必要说明一下,不同环境会有不同的结果):32位 Windows XP,Sun JDK 1.6.0_18, eclipse ...
- 学习Spring Boot:(六) 集成Swagger2
前言 Swagger是用来描述和文档化RESTful API的一个项目.Swagger Spec是一套规范,定义了该如何去描述一个RESTful API.类似的项目还有RAML.API Bluepri ...