使重定向网址与ajax一起使用

时间:2012-10-26 09:23:39

标签: jquery ajax django django-views

我想知道如何让我的请求在我的视图中使用ajax,而我想将用户重定向到其他页面。我的意思是,例如,当用户成功发送他/她的电子邮件并且我想将他/她重定向到其他页面时。如何使此请求与ajax一起使用?

我在views.py中有这个功能:

def compose(request, recipient=None, success_url=None, recipient_filter=None):
    if request.is_ajax():         
        if request.method == "POST":
            sender = request.user
            form = compose_form(request.POST, recipient_filter=recipient_filter)
            if form.is_valid():
               // do some processing
               if success_url is None:
                   success_url = reverse('messages_inbox')
               if request.GET.has_key('next'):
                   success_url = request.GET['next']
               return HttpResponseRedirect(success_url)
    else: //rest of function

然后我签入,例如'messages_inbox',用ajax传递的请求。那是什么方式?

1 个答案:

答案 0 :(得分:1)

在ajax请求的情况下,视图不应该重定向。而是让视图将success_url返回到ajax调用,然后使用成功回调来重定向用户。

jquery的示例

$.ajax(url, data, function (data, response, xhr){
    ...
    var url = success_url; //Get success url from your data which is a json response object   
    $(location).attr('href',url);
});

您也可以在没有jquery的情况下进行重定向,请参阅 How to redirect to another webpage in JavaScript/jQuery?