我用jquery发送ajax post请求:
$(function(){
$(".palcesubm").click(function(){
var location = $('#detail_address').val()
$.post('/wechat/locate/select/current/',{'location':location})
})
});
在我看来,我可以收到这个请求。然后我将数据保存在seesion中,并使用HttpResponseRedirect将请求重定向到另一个URL
@csrf_exempt
def confirm_location(request):
if request.method == 'GET':
lat = request.session.get('latitude')
lng = request.session.get('longitude')
area, detail_address = get_area_and_detail_address(lat, lng)
t= loader.get_template('confirm_location.html')
html = t.render(Context({'area':area, 'detail_address': detail_address}))
return HttpResponse(html)
else:
request.session['location'] = request.POST.get('location')
redirect_url = '/wechat/stores/direct/list?first_level='+ str(request.session.get('first_level'))
print redirect_url
return HttpResponseRedirect(redirect_url)
以下是重定向的网址视图
def direct_store_list(request):
first_level = request.GET.get('first_level')
request.session['first_level'] = first_level
store_level_list = get_store_level_list(first_level)
merchant_list = []
location =''
lat = request.session.get('latitude')
lng = request.session.get('longitude')
if request.session.get('telphone') is None:
if request.session.get('location') is None:
location = get_store_location(lat,lng)
else:
location = request.session.get('location')
del request.session['location']
else:
if request.session.get('location') is None:
location = get_user_default_location(request.session.get('telphone'))
else:
location = request.session.get('location')
del request.session['location']
merchant_list = get_merchant_list(first_level,lat,lng)
t= loader.get_template('direct_store_list.html')
html = t.render(Context({'store_level_list':store_level_list, 'merchant_list':merchant_list,
'location':location}))
return HttpResponse(html)
在终端中,http响应200 OK,但是页面不会像普通的HttpResponseRedirect那样重定向到此页面。如何解决这个问题呢?感谢
[23/Oct/2014 14:34:23] "POST /wechat/locate/select/current/ HTTP/1.1" 302 0
[23/Oct/2014 14:34:24] "GET /wechat/stores/direct/list?first_level=1 HTTP/1.1" 200 2452
答案 0 :(得分:0)
您的JS中没有任何代码可以处理Ajax帖子的结果,因此不会发生任何事情。
但是如果你想重定向,我不明白你为什么要使用Ajax:只做一个正常的POST。
答案 1 :(得分:0)
如果您使用AJAX($ .post)发送请求,您将重定向什么?您可以发送URL重定向到的解决方案,并在$ .post响应处理中执行window.location = redirectionURL。