首页  >  问答  >  正文

jQuery 变量重定向到未定义的 url,尽管它是一个字符串

我在尝试使用 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 = urlwindow.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 硬编码为从早期日志记录测试中复制粘贴的字符串时,重定向突然起作用了。 有谁知道我还能尝试什么来解决这个问题?

P粉478188786P粉478188786181 天前356

全部回复(1)我来回复

  • P粉448130258

    P粉4481302582024-04-02 00:28:36

    您的选择器.view-diagnostics 匹配两个 元素。 按钮div

    为按钮调用您的函数并将您期望的值分配给window.location.pathname

    然后事件冒泡到 div第二次调用该函数div 没有任何 data-* 属性,因此 url未定义。它被分配给 window.location.pathname 并覆盖之前的分配。

    回复
    0
  • 取消回复