使用jquery在POST请求后重定向

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

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

在这个post请求之后,我的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)) 

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

 top.location.href = "/xenopatients/measurement"; 

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

HTML代码:

 

document.measureForm.id_barcode.focus(); document.measureForm.Add.disabled = false; $('#dataTable').tablePagination({});

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

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

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

情况:有一个由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")) 

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

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

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

希望这对某人有用! ;)

@Daniel是正确的,因为你想避免使用ajax调用重定向,但你可能会看看这个Stack Overflow问题,该问题解决了如何执行此操作: 如何在jQuery Ajax调用之后管理重定向请求

在按钮上单击调用此函数()并传递参数,在我的情况下,我传递了新的

 function checkforNew(){ //jQuery.post('<%=request.getContextPath()%>/InspectionController?&oper=new'); jQuery.ajax({ type: "POST", url: '<%=request.getContextPath()%>/MyController?&oper=new', //data: {'obj':data}, dataType: "json", success: function(response){ window.location.href = response.redirect; } }); } 

在servlet中,您需要提及以下代码,以便重定向页面。

 String destination = "/mypage.jsp; response.setContentType("application/json"); JSONObject responsedata = new JSONObject(); responsedata.put("redirect", destination); out.print(responsedata); out.flush();