我是Django的新手,並且試圖獲取從Ajax發送來的變量以便在Django視圖中使用。我的觀點:使用Ajax調用來更新Django視圖
def index(request):
if (request.is_ajax()):
username = request.GET['user']
else:
username = ''
context = {'user':username}
return render(request, 'index.html', context)
和AJAX:
$.ajax({
url: '/index/',
type: 'GET',
data: {user: response.name, page: page}
});
我的問題是,username
不會在視圖更新,基於Ajax調用。我知道ajax調用工作正常,因爲在查看網絡響應時,它正在傳遞適當的更新用戶名。
我相信發生的事情是視圖被加載,然後ajax調用發生並更新用戶名,但視圖不被重新呈現,因此不會改變。我已經嘗試在獲取用戶名後進行另一次渲染,但是這並沒有改變任何內容,並且我也爲處理ajax調用提出了單獨的視圖,但這似乎也不起作用,因爲視圖總是在沒有Ajax請求的情況下加載是真的。
這是怎麼得到這個工作?謝謝你的幫助。
你從ajax響應中得到什麼?你在做什麼?如果你在你的ajax請求中添加'complete:function(resp){...}',那麼函數裏面的'resp.responseText'是什麼? – jproffitt
對不起,還有一個ajax的新手。如果我console.log響應文本,它會使用新的'username'記錄更新後的索引頁面。那麼我應該重新加載成功的頁面嗎? – mcw
你可能會用新的DOM替換DOM。但這是一種效率極低的方式。你真的需要返回用戶名,並更新。看看布蘭登的答案。在那裏他有'console.log(json.user);'做一些像$('#username')。html(json.user)' – jproffitt