gpt4 book ai didi

使用 Node.js 进行 ajax 实时搜索

转载 作者:太空宇宙 更新时间:2023-11-03 22:15:53 24 4
gpt4 key购买 nike

我是 Node.js 新手。现在我正在尝试编写一个简单的网站,用户可以在其中输入一些内容供服务器处理并接收结果,例如寻找某事。

我尝试按如下方式实现它:

  1. 编写index.html

  2. 编写server.js,它创建一个服务器,并使用var index = fs.readFileSync('index.html');显示索引页面。响应.end(index);

  3. 在index.html中添加ajax代码,用于接收用户输入并发送给服务器

  4. 最后一步是在 server.js 中添加代码,该代码处理请求并将结果发送到 ajax 进行显示。

我的问题是关于步骤4的。在server.js中,当它收到ajax请求时,是否应该以某种方式将结果添加到index.html文件中,并使用response.end(index)发送回来,或者只发回结果?如果是后一种(我尝试过),它将发送 index.html 页面和结果。但我只想要结果。

下面是两个文件index.htmlserver.js:

index.js

<!DOCTYPE html>
<html>
<!-- Client search using Ajax -->

<head>
<title>live search</title>
<script>
function getResults(query) {
if (query.length===0) {
document.getElementById("results").innerHTML="";
return;
}
if (window.XMLHttpRequest) {
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
} else { // code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET","http://127.0.0.1:2000/search?"+query,true);
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
document.getElementById("results").innerHTML=xmlhttp.responseText;
}
};
xmlhttp.send();
}
</script>
</head>
<body>
<hr>
<input type="text" id="search" onkeyup="getResults(this.value)"/>
<br>
<div id="results">
</div>
</body>
</html>
<小时/>

服务器.js

var http = require('http');
var fs = require('fs');
var index = fs.readFileSync('index.html');

var url = require('url');

http.createServer(function (req, res) {
res.writeHead(200, {'ContentType': 'text/html'});
res.end(index);

//codes for request processing
result="";
var path = url.parse(req.url).pathname;
console.log(path);
if (path.length!==0) {
result = "I'm the result";
}
res.write(result);

}).listen(2000);

最佳答案

如果我正确理解你的问题。您希望在运行时在 index.html 和 server.js 之间发送数据。

为此,您需要使用 socket.io 库。

对于客户端(index.html)使用 socket.io 的客户端库,如下所示。

<script src="/socket.io/socket.io.js"></script>
<script>
var socket = io();
</script>

现在,如果您想发送在index.html(客户端)中获得的数据,那么您可以使用

将其发送到服务器
socket.emit("EventName",{"data1": value1 , "data2" : value2 , [...]}) 

然后您可以使用事件监听器在服务器上接收它。

socket.on("EventName",function(data){ 
//here you can use "data" parameter that contains values sent from client
});

这是客户端到服务器发送/接收的场景。对于服务器到客户端,做同样的事情,即在服务器上使用socket.emit()发送到客户端,在客户端使用socket.on()从服务器接收。

关于使用 Node.js 进行 ajax 实时搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29120971/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com