如何在node js应用程序javascript中调用index.html中的函数到app.js文件

时间:2017-03-15 10:24:39

标签: javascript node.js

我有一个节点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的引用错误。可以在这里帮忙。

2 个答案:

答案 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请求,然后服务器响应函数的输出。