2016-11-30 61 views
-1

我一直在試圖讓這個簡單的代碼工作正常,但仍然無法。已經通過多個其他鏈接。我無法弄清楚我做錯了什麼。我有一個JavaScript函數submitData(),它只需要調用一個django視圖就可以調用ajax post。 django視圖基本上只需檢查請求是否爲post,如果是,則必須重定向到另一個頁面。重定向到不同的頁面後發送ajax調用django視圖

我的javascript函數submitData()如下所示,並且還添加了代碼的部分,該代碼負責發送csrf令牌以及post請求。

function submitData() 
    { 
     $.post('/loggedin/',{"fname":"name1","lname":"name2"},function(data){ 
     alert("Back from views.py"); 

     }); 
    } 

$(function() { 
     $.ajaxSetup({ 
      headers: { "X-CSRFToken": getCookie("csrftoken") } 
     }); 
    }); 

function getCookie(c_name) 
    { 
     if (document.cookie.length > 0) 
     { 
      c_start = document.cookie.indexOf(c_name + "="); 
      if (c_start != -1) 
      { 
       c_start = c_start + c_name.length + 1; 
       c_end = document.cookie.indexOf(";", c_start); 
       if (c_end == -1) c_end = document.cookie.length; 
       return unescape(document.cookie.substring(c_start,c_end)); 
      } 
     } 
     return ""; 
    } 

在我views.py,我有以下的代碼,

def loggedin(request): 
    if request.method == "POST": 
     fname = request.POST.get('fname') 
     print fname #The code comes here, prints the fname 
     args = {} 
     args.update(csrf(request)) 
     return render_to_response('loggedout.html',args,context_instance=RequestContext(request)) #This does not redirect to a different page 
    print "outside in loggedin" 
    args = {} 
    args.update(csrf(request)) 
    return render_to_response('loggedin.html',args, RequestContext(request)) 

post調用時,該FNAME打印但那是假設重定向的功能render_to_response()沒有發生發生。而是調用post,並調用post調用「Back from views.py」中的警報語句。我不確定我錯過了什麼。

+0

請顯示'render_to_response'的代碼 – Mairaj

+0

'views.py'中的'loggedin()'函數具有'render_to_response'()。我只是使用由django的django.shortcuts庫提供的'render_to_response()'函數。代碼如? – nidHi

+0

這裏根本沒有重定向。 –

回答

2

您可以在post使用javascript成功完成後重定向。

function submitData() 
    { 
     $.post('/loggedin/',{"fname":"name1","lname":"name2"},function(data){ 
     alert("Back from views.py"); 
     window.location = 'yourpage.hmtl' 
     }); 
    } 

或者,如果你是在響應發送頁面名稱,您可以使用data重定向到頁面。

+0

但我認爲它只是發送迴應你的ajax調用。 – Mairaj

+0

這種方式可行......但是不可能從django視圖本身做同樣的事情嗎? – nidHi

+0

我不這麼認爲,因爲你正在發送'ajax'調用,並且ajax應該表現得如此。 – Mairaj

相關問題