【发布时间】:2016-05-26 01:37:14
【问题描述】:
我正在 nodejs 和 html 中做项目。任何人都可以帮助如何从 server.js 为 html 中的文本字段设置值。例如,我在 index.html 上有 ID 为“名称”的文本字段。我使用 res.body.name = 'nametest' 。但它不起作用。请给我一个简单的例子。谢谢朋友们
【问题讨论】:
标签: javascript html node.js
我正在 nodejs 和 html 中做项目。任何人都可以帮助如何从 server.js 为 html 中的文本字段设置值。例如,我在 index.html 上有 ID 为“名称”的文本字段。我使用 res.body.name = 'nametest' 。但它不起作用。请给我一个简单的例子。谢谢朋友们
【问题讨论】:
标签: javascript html node.js
为了从服务器设置字段,您希望将其设置为您在发送 HTML 时定义的预设值,或者您希望稍后动态设置它。第一个选项很简单,第二个选项有点高级。
让我们看看选项 1。这只是一个非常基本的示例!请不要在生产中使用它。
index.html
<!DOCTYPE html>
<html>
<head><!-- your stuff here --></head>
<body><input type="text" name="someVal" value="{{someVal}}"></body>
</html>
这可能是您的 HTML。只是一个独特的占位符,你希望你的价值去。可能有更好的技术可以做到这一点,但为了简单起见,我选择了这种方式。
server.js
var http = require('http');
var fs = require('fs');
http.createServer((req, res) => {
fs.readFile('index.html', (err, data) => {
if (err) {
res.writeHead(500);
res.end(err);
return;
}
data = data.toString().replace(/\{\{someVal\}\}/, 'your value here');
res.writeHead(200);
res.end(data, 'utf8');
});
}).listen(8080);
此 server.js 将在端口 8080 上打开一个 HTTP 服务器。它将尝试从同一目录读取 index.html。如果失败,它将向客户端发送错误消息,否则它将用您的值替换 HTML 中的占位符,然后将修改后的内容发送给客户端。
如果这就是你想做的全部,PHP 可能会为你做得更好(但这只是我的 2 美分 :))
选项 2 要复杂得多。您必须使用 AJAJ (Asynchronous Javascript and JSON),它要求客户端知道何时获取值,或者您可以使用 websockets,使服务器能够将值推送到客户端。对于其中任何一个,都有很多教程,这些教程比我在这里为您整理的任何内容都要详细得多。
如果你想使用这些技术,但对它们的实现有点不确定,你可能想看看 Meteor 和 Socket.IO 等框架
【讨论】:
data 是一个对象,所以你必须在调用replace() 之前调用toString()。我修复了答案中的代码。
您不能从服务器端设置客户端的东西。它们是完全不同的物理层。
您需要的是 AJAX 来从您的 Web 应用程序向您的 NodeJS 服务器端应用程序请求资源,并将您放入的响应设置为整个 文本字段.
也许您需要查看 ExpressJS 来构建一个简单的 RESTful 服务来在您的客户端和服务器层之间共享资源。
【讨论】: