今天在做项目的时候,如果用户已注册,直接跳转登录页。可是发起一个ajax请求后,执行完并不能跳转,无法实现重定向。
参考代码如下:

......
if msg['msg'] == '邮箱已存在':
	return redirect('/signin/')
......
  • 在网上也查了一些资料,ajax只是做局部提交,重定向并不是其中的动作,所以无法实现重定向。
  • Ajax只是利用脚本访问对应url获取数据而已,不能做除了获取返回数据以外的其它动作了,所以浏览器端是不会发起重定向的。
  • 正常的http请求,只有浏览器和服务器两个参与者。浏览器端发起一个http请求,服务器端处理后发起一个重定向,浏览器端从response中获取到重定向地址,发起另一个http请求。也就是说,浏览器会按照response中的内容进行响应(如重定向),这是浏览器的功能决定的就得响应。
  • Ajax请求,参与者就有三个即ajax、客户端、服务器,ajax处于客户端和服务器两者之间。过程是客户端发起一个ajax请求,服务器端处理后,如果发起一个重定向,然后ajax会怎么办呢?它只会获取刚才请求返回的数据,其他的任何动作一概不去做,ajax是这么做的(ajax功能就是这么设定的,ajax框架源代码也是这么写的)。

也就是说,引入了ajax之后,ajax就插在浏览器和服务器之间了,服务器给浏览器的response被ajax拦截了,但是ajax本身却什么都不做,也不转达。

那么怎么办呢?
解决办法:
通过后台给前台返回一个值,前台通过这个值判断从而进行重定向。
参考代码如下:

# 后台代码
......
if msg['msg'] == '邮箱已存在':
	return JsonResponse({'msg':'exist'})
......
# 前台代码
......
success:function(data){
	if (data.msg == 'exist'){
		window.location = '/signin/'
......
                                    本文实例讲述了django+js+ajax实现刷新页面的方法。分享给大家供大家参考,具体如下:
在服务器开发的时候,为了方便将服务器对外开一个接口来操作,可以使用django制作网页,通过页面来操作服务器。这样可以将服务器的维护工作暴漏在更加友好的界面操作,而非通过SecureCRT去敲指令。而且还能提供给策划运维人员来处理一些常规的事情。
这里将会讲解一个非常小的知识点:
① js如何发起一次请求 
② django如何响应请求 
③ js接收到响应如何区域刷新页面
我们先在html定义一个button,并且将id设置成btnTerminalSvr。定义一个反馈的静态标题ntfT
                                    我是新的DjangoAJAX(javascript)。 最后,我可以发送一些参数到Django视图。这个视图呈现一个编辑表单。 我发送的参数和视图响应的形式与我需要的信息,但我不能重定向到从视图呈现的形式。 AJAX温控功能:DjangoAJAX GET请求后重定向$.ajax({type:"GET",url: "/recepcion/",datatype: 'json',data: ({i...
                                    小编典典终于我做到了!感谢上帝!非常兴奋!我以前的代码有三个主要问题。首先:由于ajax会将news_pk发布到视图 update_comment,所以我不需要在此视图的url和template(在tag的url和ajax的url)添加news_pk,所以我删除了它们或数据仍会通过Form,但不会通过Ajax。第二:我的绑定不正确,我在表单上有单击处理程序,应该是提交处理程序。如果将其绑定到...
  1:在登陆页面输入账号密码后,ajax异步提交数据给后端验证。
  2:验证通过后,后端指定跳转页面,并把页面封装进返回的Json数据,由ajax控制from表单跳转到目标页面
一:登陆页面HTML代码
  页面的跳转主要通过ajax控制form表单的action动作完成。因此如果action属性有url,那么后端不指定跳转页面的话,会默认跳转此页面,下面代码,默认跳转到h...
                                    本文主要讲解使用HttpResponseRedirect、redirect、reverse以及配置文件配置URL等重定向方法
  本文使用Django1.8.2 
  使用场景,例如在表单一提交数据后,需要返回到另一个指定的页面即可使用重定向方法
  一、 使用HttpResponseRedirect 
      ● fuhao The first argument to the co
                                    本文要实现的功能是:根据下拉列表的选项将数据库对应的内容显示在页面,选定要排除的选项后,提交剩余的选项到数据库。为了方便前后台交互,利用了Ajax的GET和POST方法分别进行数据的获取和提交。
代码如下:
<!--利用获取的数据进行表单内容的填充-->
<script>
$("#soft_id").change(function(){
var softtype=...
                                    转发和重定向:       转发:一次请求和响应,请求的地址没有发生变化,如果此时刷新页面,就会出现重做现象。       重定向:一次以上的请求和响应,请求地址发生一次以上的变化,如果此时刷新页面,就不会发生重做现象。我来举个简单的列子,比如我手机号上不了4G网,我打电话给10086,说了我这个情况后,她会把这个情况反映给技术人员,来帮我解决这个问题,如果说我又有这个问题的话直接点击重播就好了,...
                                    Django 跳转和重定向的方法:
跳转和重定向很常见的场景就是登录和注销后返回到当前页面。给你个登录和注销的例子。比如用户正在浏览一篇文章,发现下载该文章的附件需要登录才能进行,这时候点击登陆链接转入登陆页面,输入用户名密码登陆成功以后,会自动转回原来的那篇文章所在的页面。(目前很多网站采用ajax方法弹出对话框登陆,效果更好一些)怎么做呢?下面说的是django的实现,但是大多数的...
                                    一、ajax重定向的问题。
默认ajax是不支持重定向的,因为ajax本身就是局部刷新,不重新加载页面的。如果需要用到重定向可以通过以下方法:
第一步:后端代码改造。
在后端(大部分情况都是拦截器)判断是否需要重定向。
Eg:session过期判断,当判断session已经过期了,就先判断此次请求是否是ajax的请求。
String type =request.getHead
                                    使用Django的时候,页面请求正常,也没有报任何错误,甚至连警告都没有的情况下,页面却还是原地不动或者闪一下或者无限显示加载动画的情况适用本文。
这个问题描述比较笼统,但根据我目前遇到过两种情况来看,似乎都比较重要而且实用,所以打算分别讲述一下。
第一种:URL配置错误
页面闪一下,却原地不动,可能是这种情况。
例如有以下两个URL:
     url(r'^foo/bar/', 
                                    (1)在应用views.py导入Django重定向
(2)点击页面新增链接,url匹配/create,跳转到view的create函数,写入数据,然后重定向到/index
(3)点击新增,服务器执行了两次
(4)第一次/create,第二次/index
(5)重定向
(6)点击删除链接,urls匹配delete(\d+),数字作为参数传递给views.delete函数,重定向到/index
(a...
                                    网站重定向将采用一个网站URL并将其指向另一个。当任何人键入或单击该原始URL时,他们将被带到新页面或网站。即使您现在不需要实现重定向,最终也可能需要执行此操作。知道如何实现重定向也是重要的一步。您可以基于URL或逐页实施重定向。您需要了解几种不同类型的重定向。如下所示,301重定向是最常见和最有用的,但是还有其他一些重定向可用。一、重定向的类型1、301重定向301重定向是永久重定向。这是最常用...