我有一个节点js应用程序,我有我的app.js和一个html,它显示为路由/index.Now在我的索引文件中我有一个按钮和文本框,当我点击按钮Iam试图调用一个函数。在该函数中我将有一个带有一些文本的变量" Hello"应该在文本框中显示。我无法实现这一点可以帮助。
<html>
<body>
<div class="jumbotron" style="padding:40px;">
<h1>Hello!!!</h1>
<div>
<button type="submit" onclick="getData();">Call</button>
<input type="text">
</div>
</div>
</div>
</body>
</html>
app.js
app.get('/index',function(req,res){
res.sendFile(path.join(__dirname+'/index.html'));
});
function getData(){
console.log("Hello");
var text="Hello";
};
现在我得到了没有定义getData的引用错误。可以在这里帮忙。
答案 0 :(得分:2)
index.html 在浏览器中运行,因此您无法调用getData()
app.js
函数
将getData()
函数体移至index.html
,因为Nenad Vracar建议或使用某种API进行客户端 - 服务器通信。
代码已移至index.html
<html>
<body>
<script>
function getData() {
var text="Hello";
document.querySelector('#input_id').value = text;
}
</script>
<div class="jumbotron" style="padding:40px;">
<h1>Hello!!!</h1>
<div>
<button type="submit" onclick="getData();">Call</button>
<input type="text" id="input_id">
</div>
</div>
</div>
</body>
</html>
答案 1 :(得分:2)
我想你可能误解了NodeJS是什么。 Node与浏览器中运行的其他JavaScript或jQuery不同。
Node是在服务器上运行的代码。您在app.js
中正确完成的操作是让服务器将index.html
文件发送到浏览器。但在此之后,浏览器知道并且有权访问的是index.html
文件,它是一个单独的文件和上下文,因此无法访问服务器。
让页面在服务器上调用函数的唯一方法是创建某种API,其中页面向服务器发送单独的http请求,然后服务器响应函数的输出。