我正在開發一個使用 AJAX 瀏覽我的路線的單頁 Flask 應用程式。例如,當用戶單擊導航鏈接時,會使用 AJAX 發出 GET 請求,該請求會呼叫類似“/profile”的路由,該路由會回傳包含要在螢屏上替換的 HTML 的 JSON。
如果我在瀏覽器中鍵入現有路由而不呼叫 AJAX 請求,則 HTML 將按預期以 JSON 格式回傳,并簡單地粘貼為螢屏上的文本。我想讓用戶能夠在地址欄中鍵入路由并加載頁面,而不是僅僅將 JSON 與 HTML 一起粘貼。如果沒有發出 AJAX 請求(有人只是在瀏覽器中輸入“/profile”而不單擊組態檔導航鏈接),那么從我的 Flask 端點回傳視圖而不是簡單地回傳 JSON 的正確方法是什么?
我的第一個想法是將某種型別的引數作為每個 AJAX 請求的一部分傳遞,并讓后端在呼叫時檢查該引數是否存在,我將回傳一個視圖而不是 JSON。這似乎非常低效,并且會通過添加更多 if 陳述句使代碼更加復雜。此外,我必須為每條路線創建 2 個 HTML 檔案。
解決這個問題的正確方法是什么?
uj5u.com熱心網友回復:
如果您正在發出 ajax 請求,則可以將其添加到您的路由中。
_xhr_key = request.headers.get('X-Requested-With')
if _xhr_key and _xhr_key == 'XMLHttpRequest': # if true this means that its an AJAX call
#return data for AJAX function
else:
#return data for regular request
#render HTML template to the user over here since its a regular request
Ajax 請求生成一個 XMLHttpRequest 物件 因此,如果 XMLHttpRequest 物件存在于標頭中,則意味著它是一個 AJAX 請求。這就是當用戶正常加載網頁時如何加載網頁的方式,因此,您可以使用 AJAX 呈現頁面,并且當有人通常在瀏覽器中鍵入鏈??接時
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/428775.html
標籤:javascript jQuery django 阿贾克斯 烧瓶
