使用jquery在POST请求后重定向

Pie*_*rto 6 django ajax jquery post redirect

我正在使用Django.我有一个HTML页面,我在那里做一些Javascript的东西,然后我用这种方式做一个jQuery帖子:

$.ajax({ 
  url: '/xenopatients/measurement/qual', 
  type: 'POST', 
  data: {'obj':data}, 
  dataType: 'json', 
  contentType: "application/json; charset=utf-8", //questo ok 
}); 
Run Code Online (Sandbox Code Playgroud)

在此帖子请求之后,我的Django视图正确处理了此URL的调用.我想要它做的是处理数据,将用户发送到另一页,并将此数据发送到新页面.问题是我不能像往常一样在Python中执行重定向,就像代码忽略重定向一样.

我的Python代码是:

@csrf_protect 
@login_required#(login_url='/xenopatients/login/') 
def qualMeasure(request): 
    name = request.user.username 
    print "enter" 
    if request.method == 'POST': 
        print request.POST 

        if "obj" in request.POST: 
            print 'obj received' 
            return render_to_response('mice/mice_status.html', RequestContext(request)) 

    return render_to_response('measure/qual.html', {'name': name, 'form': QualMeasureForm()}, RequestContext(request)) 
Run Code Online (Sandbox Code Playgroud)

我发现更改页面的唯一方法是在上面的代码之后通过Javascript:

top.location.href = "/xenopatients/measurement";
Run Code Online (Sandbox Code Playgroud)

但是我不知道在使用这种方法时如何传递我需要的数据.

HTML代码:

<form action="" method=""> 
  <table id="dataTable" width="100%" border="1"></table><br> 
  <script language="javascript"> 
    document.measureForm.id_barcode.focus(); 
    document.measureForm.Add.disabled = false; 
    $('#dataTable').tablePagination({}); 
  </script> 
  <input type="button" name="save" value="Save Measure Serie" onclick="table2JSON('dataTable')"/> 
</form> 
Run Code Online (Sandbox Code Playgroud)

PS我也试过$.post,但结果相同.

在Django中使用jQuery发出请求后,如何进行重定向?

Pie*_*rto 8

好的,我找到了神奇的解决方案!:)

情况:有一个由jQUery.ajax()调用的视图方法

要在Ajax之后重定向,我已经使用了这里找到的提示(在jQuery selecotor中使用文档而不是'body')

但是,我还有进一步的行动要做.

在被调用的视图中,调用另一个方法,如下所示:

[...]
if request.method == 'POST':
    if "obj" in request.POST: #ricevuti dati da ajax
        request.session['qual'] = request.POST['obj']
        return HttpResponseRedirect(reverse("xenopatients.views.qualReport"))
Run Code Online (Sandbox Code Playgroud)

我在会话中保存了我需要的数据.我在被调用的视图中使用这些数据.

调用另一种方法,它是重定向浏览器页面的键.实际上,在被调用方法结束时,您通常可以编写和执行:

return render_to_response('measure/qualReport.html', {'name':name, 'list_report': report, 'message':'Measures correctly saved'}, RequestContext(request))
Run Code Online (Sandbox Code Playgroud)

希望这对某人有用!;)