0

我想知道如何让我的请求在我的视图中使用 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 传递的请求。那么有什么办法呢?

4

1 回答 1

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 的情况下进行重定向,请参阅 如何在 JavaScript/jQuery 中重定向到另一个网页?

于 2012-10-26T09:37:34.230 回答