我在嘗試使用 jQuery 重定向到新 URL 時遇到問題,但不知何故它在這種特定情況下不起作用。我將 jQuery 與 html 和 Django backlog 結合使用,但我認為這些都不會導致顯示未定義的參數。程式碼相當簡單:
$(document).on('click', '.view-diagnostics', function(){ let url = $(this).data("href"); window.location.pathname = url; })
點擊的html元素如下:
<td> <div class="view-diagnostics"> <button class="button h-btn view-diagnostics" data-href="{% url "internet:diagnose" %}">{% trans "View diagnostics"%} </button> </div> </td>
在這種情況下,我可以使用console.log(url)
記錄URL 並取得"/something/something/"
形式的字串,我可以使用瀏覽器中的檢查工具使用斷點來查看該URL 確實包含正確的URL,我可以獲得URL 的類型,它是一個字串。然而,當我單擊執行此程式碼的按鈕時,該網站會重定向到http://127.0.0.1:8000/undefined
(我使用的是本機伺服器),因此不知何故URL 現在未定義。
我已經嘗試了很多不同的方法來執行此操作,包括嘗試重定向到新網址的每種方法,包括window.location = url
、window.location.href = url
,但總是彈出未定義。我也已經嘗試列印 URL 的內容和類型,這一切看起來都很好。對我來說最奇怪的部分是,如果我將程式碼更改為
$(document).on('click', '.view-diagnostics', function(){ let url = $(this).data("href"); url = "/something/something/" window.location.pathname = url; })
即使我從第一個 let URL 行的 console.log() 結果中複製並貼上 URL,程式碼也會正確重定向到正確的 URL。
總結一下問題:有一個按鈕,其中包含 data-href
套件中的 URL。單擊按鈕時,我會在 jQuery 中取得 URL,並將其儲存為 URL。我現在可以使用 console.log()
記錄 URL 並取得類型,然後我得到 URL 和我期望的類型(字串)。當我嘗試重定向到此 URL 時,出現錯誤,無法重定向到 URL http://127.0.0.1:8000/undefined
。當我將 URL 硬編碼為從早期日誌記錄測試中複製貼上的字串時,重定向突然起作用了。
有人知道我還能嘗試什麼來解決這個問題?
您的選擇器
.view-diagnostics
符合兩個 元素。按鈕
和div
。為按鈕呼叫您的函數並將您期望的值指派給
window.location.pathname
。然後事件冒泡到
div
並第二次呼叫函數。div
沒有任何data-*
屬性,因此url
是未定義
。它被指派給window.location.pathname
並覆寫先前的分配。