在javascript中使用Ajax请求后的页面重定向

时间:2014-10-23 06:40:09

标签: jquery django

我用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

2 个答案:

答案 0 :(得分:0)

您的JS中没有任何代码可以处理Ajax帖子的结果,因此不会发生任何事情。

但是如果你想重定向,我不明白你为什么要使用Ajax:只做一个正常的POST。

答案 1 :(得分:0)

如果您使用AJAX($ .post)发送请求,您将重定向什么?您可以发送URL重定向到的解决方案,并在$ .post响应处理中执行window.location = redirectionURL。