2012-09-10 70 views
1

我正在製作我的第一個Django應用程序,並且遇到了一些AJAX問題。在我的網站上,用戶可以看到一張照片庫。要到達這個頁面,他們只需要去/照片。照片視圖計算要顯示的照片並將它們傳遞到模板進行渲染。django模板無法在AJAX後重新加載

他們可以通過點擊某個按鈕申請查看更多照片。點擊這個按鈕向服務器發送一個AJAX請求。服務器計算一組要顯示的照片,然後再次將照片傳遞到相同的模板以進行顯示。唯一的問題是屏幕上的照片永遠不會改變。

我確認服務器正在計算新照片。不幸的是,很多應該發生的事情實際上並沒有發生。首先,使用Chrome開發人員工具,我可以看到照片文件從不從服務器發送到瀏覽器。此外,DOM從不更新src屬性來引用新照片。爲了使這些事情發生,我需要做些什麼?

謝謝。

編輯:

一些代碼:

#The python view summarized 
def photos: 
    photoList = GetListOfPhotos() #Returns photo objects. These objects have a file field which is access from the template. 
     return render(request, 
       'photos.html', 
      {'photoList': photoList}, 
       context_instance=RequestContext(request) 
      ) 

#AJAX request 
$(document).ready(function(){ 
    $("#right-arrow").click(function(event) { 
     $.post("/photos/", {"arrow" : "right" 
     }); 
    }); 
}); 
+0

你可以發佈你的代碼嗎? – Vor

+0

什麼部分?我不認爲後臺會太有幫助。我將總結一下 – Nick

+1

'$ .post(「/ photos /」,{「arrow」:「right」})'將請求發送到服務器,但對服務器響應什麼也不做。您可能想要在您的帖子成功更新您的dom並下載新圖像時添加回調。 –

回答

0

最可疑的事情對我來說,你說

再次通過照片來顯示相同​​的模板。

這是與您的/photo url對應的完全相同的模板嗎?如果是這樣,你應該使用它的一小部分來渲染照片在列表或表格中(或者你可以顯示它們)除此之外,有幾件事可以幫助解決這個問題。

  1. 在鉻開發工具中確保您的JavaScript發送正確的數據。這可以通過在net選項卡中驗證你的參數來完成,並且可以自由使用控制檯日誌;

  2. 確認您的視圖實際上正在做它應該做的。我喜歡pdb。這是完美的。你可以編寫測試,或者製作打印報告或w/e。

  3. 確認您的前端正在接收數據。 Chrome工具可以幫助您做到這一點。淨選項卡會讓你看到迴應。

我想更具體一些,但是您沒有提供具體細節。

爲了幫助更好的回答它的重要性,以發佈所有相關的代碼。

+0

Chrome開發人員工具的「網絡」標籤,我點擊了AJAX請求,並查看了發送給瀏覽器的html。它看起來像新的HTML是100%正確的,包括正確的照片的鏈接。奇怪的是,瀏覽器從來沒有嘗試渲染這個html。您確實提出了一個很好的觀點......我應該使用單獨的模板,或者更好,我應該只是將照片發送回瀏覽器,然後使用單獨的JS將這些照片應用到DOM。 – Nick

+0

@ user1556487如果您閱讀Joe Day的評論,您實際上沒有對答覆做任何事情。是什麼讓你認爲這個迴應會放在任何地方?如果您發佈的js是完整的代碼,那麼需要爲您的ajax請求定義回調 – dm03514

相關問題