2012-10-26 70 views
0

我想知道如何使我的請求在我的視圖中使用ajax工作,而我想將用戶重定向到其他頁面。例如,當用戶成功發送他/她的電子郵件時,我想將他/她重定向到其他頁面。我應該怎麼做才能使這個請求與Ajax一起工作?重定向url使用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」,與阿賈克斯傳遞請求。那麼這是怎麼回事?

+1

發表您的JavaScript即可。 – jpic

回答

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?

+0

然後,我們將如何訪問會話變量或該頁面中的請求屬性,因爲視圖不會呈現響應。 – cafebabe1991

+0

現有的會話/請求屬性已經可用在頁面http://stackoverflow.com/questions/2551933/django-accessing-session-variables-from-within-a-template。如果你想從重定向的請求獲得會話信息,那麼Ajax的回調函數中的'response'將會包含頭文件,你可以訪問這些頭文件來獲取會話相關信息。 –

+0

但在你提到的問題,你提到的鏈接..它使用渲染來響應..並且你能展示如何從頭文件中檢索信息 – cafebabe1991