![](/img/trans.png)
[英]Joomla Site - have a form that calls a javascript function - but it also is redirecting my url - why?
[英]Why is my JavaScript search function redirecting to “http://localhost:8090/?”?
我正在创建一个网络服务器,目前正在http:// localhost:8090上托管。 它由HTML文件,server.js和client.js文件组成。 我已经设法在客户端和服务器之间建立了完全满足我需求的通信。 我的问题在于,当我点击我的搜索按钮时,一切都很好,除了某些原因它会将页面重定向到' http:// localhost:8090 / ?' 当我需要它继续' http:// localhost:8090 / '时,它可以动态更新HTML。
我进行了广泛的搜索,发现没有任何类似于我的问题。 我发现了这个问题https://stackoverflow.com/a/2647601/5264986但是每次页面想要转到不同的地址时都会出现一个对话框,这不是我需要的。 我已经完成了所有代码,并且没有指向此位置的重定向或href。 我已经将它缩小到client.js中的这个函数:
function search(){
var search = document.getElementById('txt_field').value;
fetch('/search', {
headers: {text: search}
})
.then(response => response.json())
.then(function(data) {
// CODE HERE TO DYNAMICALLY UPDATE HTML
})
.catch(error => console.error(error));
}
在我的服务器中,所有发生的事情是:
app.get('/search', function(req, res){
var text = req.get('text');
var url = 'https://api.spotify.com/v1/search?q=name:'+text+'&type=track';
var content = httpGet(url);
res.send(content);
});
其中httpGet是xmlhttprequest。
这是搜索按钮的html:
<button id="send_btn" class="btn btn-outline-secondary my-2 my-sm-0"><img src="./images/search.png" width="30"></button>
在client.js中这是触发它的原因:
document.getElementById('send_btn').onclick = search;
它将内容发送回客户端,但由于某种原因,它会重定向到:8090 /? 它重新加载html文件并覆盖动态html。 任何指向正确方向的人都会非常感激。
将preventDefault
添加到事件处理程序。 我假设单击按钮时会调用函数search
。 如果是这样,那么你需要传递如下事件:
function search(evt){ evt.preventDefault(); // <-- var search = document.getElementById('txt_field').value; fetch('/search', { headers: {text: search} }) .then(response => response.json()) .then(function(data) { // CODE HERE TO DYNAMICALLY UPDATE HTML }) .catch(error => console.error(error)); }
preventDefault
会告诉浏览器不要执行按钮的默认操作,即提交表单。
因此, preventDefault
让浏览器知道您不希望它提交表单,从而防止重定向发生。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.