Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 基于值的重定向URL并不总是有效_Javascript_Url_Redirect - Fatal编程技术网

Javascript 基于值的重定向URL并不总是有效

Javascript 基于值的重定向URL并不总是有效,javascript,url,redirect,Javascript,Url,Redirect,我对JavaScript非常陌生,我编写了一个代码,根据用户在搜索栏中键入的内容将用户重定向到另一个页面 奇怪的是,它有时起作用有时不起作用(一半),有人可能知道这是什么原因 我的HTML <form class="form-inline my-2 my-lg-0"> <input id="inputName" class="form-control mr-sm-2" type="search&quo

我对JavaScript非常陌生,我编写了一个代码,根据用户在搜索栏中键入的内容将用户重定向到另一个页面

奇怪的是,它有时起作用有时不起作用(一半),有人可能知道这是什么原因

我的HTML

<form class="form-inline my-2 my-lg-0">
    <input id="inputName" class="form-control mr-sm-2" type="search"
           placeholder="Search">
    <button id="searchBtn" class="btn btn-outline-success my-2 my-sm-0" onclick="searchUser()" type="button">
        Search
    </button>
</form>

更新:谢谢你指出双重身份,我已经删除了额外的身份,但问题仍然存在

它可能发生在所有字符串上,例如,“hsy”,它有时有效,有时无效


从URL
http://127.0.0.1:8000/user/hsy
,如果不起作用,URL将显示为
http://127.0.0.1:8000/user/hsy?
URL末尾有一个额外的问号。

它不适用于
窗口。open()
,因为如果您阅读控制台,它会显示:“在新窗口中有一个阻止打开的'stacksnippets.net/user/vfd',因为该请求是在未设置'allow popups'权限的沙盒框架中发出的。”。window.open()如果不在堆栈代码段中,则可以正常工作。“。因为您使用的是堆栈代码段或类似的帧来重定向。如果要使用它

使用

window.location.replace()

而不是

window.open()

函数searchUser(){
window.location.replace(“/user/”+document.getElementById('inputName').value);
}

搜寻

它不适用于
window.open()
,因为如果您阅读控制台,它会说:“在新窗口中有一个阻止打开的'stacksnippets.net/user/vfd',因为请求是在一个沙盒框架中发出的,而该框架的'allow popups'权限未设置。”。window.open()如果不在堆栈代码段中,则可以正常工作。“。因为您使用的是堆栈代码段或类似的帧来重定向。如果要使用它

使用

window.location.replace()

而不是

window.open()

函数searchUser(){
window.location.replace(“/user/”+document.getElementById('inputName').value);
}

搜寻

多亏了@Niet the Dark Absol,他的想法才是真理

我不应该把表单和输入混为一谈。通过删除表单属性,它可以正常工作


非常感谢,伙计们。

感谢@Niet the Dark Absol,他的想法就是真理

我不应该把表单和输入混为一谈。通过删除表单属性,它可以正常工作


非常感谢,各位。

您为
元素设置了两个id。您能提供一个它不起作用的示例输入吗?
HTMLInputElement\35; value
已经是一个字符串。无需将其转换为
字符串
对象,只需将其连接到原始字符串即可。您只是白白地做了额外的工作XDOh是的..您真的ve没有任何东西阻止表单执行其提交表单的
默认行为。如果没有
操作
属性,它将提交到当前URL,如果没有
方法
属性,它将默认为
获取
。由于表单元素上没有
名称
属性,整个查询就是…
将是解决这一问题的一种方法,尽管当您不使用任何类似于行为的形式时使用
有点奇怪。@topsoftwarepro您好,很抱歉您的答案不正确,真正的原因是我将表单与js.window.location.replace()混合在一起似乎不是原因:(您为
元素设置了两个id。您能提供一个它不起作用的示例输入吗?
HTMLINPUTTELEMENT#value
已经是一个字符串。无需将其转换为
string
对象,只需将其连接到原始字符串即可。您只是白白做了额外的工作XDOh是的..您没有任何东西可以停止表单。)通过执行其提交表单的
默认
行为。如果没有
操作
属性,则提交到当前URL,如果没有
方法
属性,则默认为
获取
。由于表单元素上没有
名称
属性,因此整个查询只是…
这可能是解决这个问题的一种方法,尽管当您不使用任何形式的行为时,使用
有点奇怪。@topsoftwarepro您好,很抱歉您的答案不正确,真正的原因是我将表单与js.window.location.replace()混合在一起似乎不是原因:(谢谢,请您解释一下原因?在这个问题上,它们似乎没有太大区别:(在这里不起作用,因为在新窗口中有一个阻止打开的“stacksnippets.net/user/vfd”,因为请求是在一个沙盒框架中发出的,该框架的“allow popups”权限未设置。window.open()如果它不在堆栈片段中,则可以正常工作。谢谢,介意解释原因吗?在这个问题上,它们似乎没有太大区别:(在这里不起作用,因为在新窗口中有一个阻止打开的“stacksnippets.net/user/vfd”,因为请求是在一个沙盒框架中发出的,该框架的“allow popups”权限未设置。window.open()如果它不在堆栈代码段中,则可以正常工作。