Django中AJAX GET请求后重定向
Redirect after AJAX GET request in Django
我是Django和AJAX(javascript)的新手。最后,我可以向django视图发送一些参数。此视图呈现编辑表单。我向表单发送参数和视图响应以及我需要的信息,但我无法重定向到从视图呈现的表单。AJAX功能:
$.ajax({
type:"GET",
url: "/recepcion/",
datatype: 'json',
data: ({i: idpro[0].innerHTML, a: ano[1].innerHTML, m: mes1[2].innerHTML }),
success: function(data){
window.location.href = data.redirect;
//window.open("GET",url,true)
}
});
django视图:
def RecepcionView(request):
idp = request.GET.get('i')
anio = request.GET.get('a')
mes = request.GET.get('m')
if request.method == 'POST':
r = DetalleRecepcion.objects.get(id_proveedor=idp,anio=anio,mes=mes)
form = RecepcionForm(request.POST, instance=r)
if form.is_valid():
form.save()
return HttpResponseRedirect('/monitor/')
else:
r = DetalleRecepcion.objects.get(id_proveedor=idp,anio=anio,mes=mes)
form = RecepcionForm(instance=r)
return render_to_response('recepcion.html',
{'form':form},
context_instance=RequestContext(request))
在firebug控制台中,我可以看到响应,这是我需要的带有信息的表单。我不知道如何从响应重定向到页面,我不确定是必须在django视图中添加一些重定向函数,还是仅在ajax成功函数中添加。我对这两种语言真的很陌生,我很困惑错误在哪里。
提前感谢
从您的代码中,我猜您有一个"常规"视图(而不是用于处理ajax数据的视图)。重定向可以在视图中实现,不需要ajax。只需提交表格。在你的recepcon.html文件中写一些类似的东西
some html
<form method="POST" action=""> <!-- we leave the action part blank, to send the data to the same view -->
{{ form }} <!-- the form you are passing to the template -->
{% csrf_token %} <!-- do not forget the token or django will return an error -->
<input type="submit" name="submit" value="Submit"/>
</form>
some html
Btw:
- 可以使用渲染(https://docs.djangoproject.com/en/dev/topics/http/shortcuts/#render)而不是render_to_response(您不必每次都传递请求)
- 您可以使用reverse函数重定向到url。即写HttpResponseRedirect('/monitor/')而不是HttpResponse redirect,(reverse('name_of_the_view_you_want_to_redirect_to'),https://docs.djangoproject.com/en/1.6/ref/urlresolvers/#reverse.
相关文章:
- 单击事件中的ajax请求后重定向
- 为什么这个请求不会遵循我的龙卷风重定向
- 如何在fetch post调用后管理重定向请求
- Hapi-js重定向到另一个带有额外请求数据的路由
- Laravel:在 ajax 请求的会话过期后重定向到登录
- 由于重定向URI无效,Key斗篷令牌请求被拒绝
- 使用Javascript重定向并设置请求属性
- 带有301重定向的Javascript GET请求
- 遵循重定向的图像HTTP请求,客户端
- 如何侦听跨域映像请求上的任何301/302重定向状态代码
- 当用户名和传递请求通过ajax完成时,我如何重定向页面
- 检测ajax请求的跨域重定向
- Node.js POST请求,无重定向
- 在Chrome扩展中使用PAC文件重定向HTTPS请求似乎失败了
- Facebook重定向到一个空白的权限请求页面
- jQuery表单插件:如何正确处理从服务器发回的重定向请求
- 在WordPress或PHP中抓取重定向请求源
- 从angular-js应用的重定向请求中抓取一个头文件
- request.send()后重定向-请求未被提交,页面重定向
- 如何在 jQuery Ajax 调用后管理重定向请求