更新node.js中的HTML输入值而不更改页面(Update HTML input value in node.js without changing pages)

编程入门 行业动态 更新时间:2024-10-22 12:31:48
更新node.js中的HTML输入值而不更改页面(Update HTML input value in node.js without changing pages)

我的目标是创建一个HTML表单,当您提交2个数字时,它们将被添加到node.js中的服务器端,并且答案将显示在同一HTML页面中的只读输入字段中。 目前,我的功能在单独的页面中输出答案 - 我不想重定向用户,只是在进行计算服务器端时在同一页面上显示答案。

我目前的app.js:

var express = require('express');
var path = require('path');
var bodyParser = require('body-parser');
var app = express();

app.set('port', process.env.PORT || 8080);

app.use(bodyParser.urlencoded({extended: true}));

app.use(express.static(path.join(__dirname, '../static')));

app.get('/', function(req, res){
  res.redirect('/public');
});

app.post('/add', function(req, res){
  var a = parseFloat(req.body.numa);
  var b = parseFloat(req.body.numb);
  var sum = a+ b;
  res.send('Sum: ' + sum);
});

var server = app.listen(app.get('port'), function(){
  var port = server.address().port;

}); 
  
 

我的HTML:

<!DOCTYPE html>
<html>
<head>
  <title>hello</title>
</head>
<body onload="testFunc()">

  <h1>Public page</h1>

<form action="/add" method="post">
  Number 1:
  <input type="number" name="numa" step="any"/><br>
  Number 2:
  <input type="number" name="numb" step="any"/><br>
  <input type="number" name="answer" readonly/>
  <input type="submit" value="Submit"/>
</form>
</body>
</html> 
  
 

我已经浏览了其他帖子,但解决方案都是通过用哈巴狗或玉石来做的,有没有办法做到这一点没有? 关于我应该采取什么方向的任何建议将不胜感激! 谢谢。

My aim here is to create a HTML form that when you submit 2 numbers they are added together server side in node.js and the answer is displayed in a readonly input field in the same HTML page. At present, my function outputs the answer in a separate page- I don't want to redirect the user, just show the answer on the same page while doing the calculation server side.

My current app.js:

var express = require('express');
var path = require('path');
var bodyParser = require('body-parser');
var app = express();

app.set('port', process.env.PORT || 8080);

app.use(bodyParser.urlencoded({extended: true}));

app.use(express.static(path.join(__dirname, '../static')));

app.get('/', function(req, res){
  res.redirect('/public');
});

app.post('/add', function(req, res){
  var a = parseFloat(req.body.numa);
  var b = parseFloat(req.body.numb);
  var sum = a+ b;
  res.send('Sum: ' + sum);
});

var server = app.listen(app.get('port'), function(){
  var port = server.address().port;

}); 
  
 

my HTML:

<!DOCTYPE html>
<html>
<head>
  <title>hello</title>
</head>
<body onload="testFunc()">

  <h1>Public page</h1>

<form action="/add" method="post">
  Number 1:
  <input type="number" name="numa" step="any"/><br>
  Number 2:
  <input type="number" name="numb" step="any"/><br>
  <input type="number" name="answer" readonly/>
  <input type="submit" value="Submit"/>
</form>
</body>
</html> 
  
 

I've looked through other posts but the solutions all work through doing it with pug or jade, is there any way to do this without? Any suggestions on what direction I should take would be appreciated! Thank you.

最满意答案

在服务器端的客户端bodyParser上使用Jquery Ajax:

客户端:

<form id="myForm" method="post"> Number 1: <input type="number" id="numa" name="numa" step="any"/><br> Number 2: <input type="number" id="numb" name="numb" step="any"/><br> <input type="number" id="answer" name="answer" readonly/> <input type="submit" value="Submit"/> </form> <div id="result"></div> <script> $(document).ready(function(){ $("#myForm").submit(function(event){ event.preventDefault(); var num1 = $('#numa').val(); var num2 = $('#numb').val(); $.ajax({ method: 'post', url: '/data', data: JSON.stringify({ num1: num1, num2: num2 }), contentType: 'application/json', success: function(data) { $('#answer').val(data); } }) }); }); </script>

和服务器端:

app.use(bodyParser.urlencoded({ // body-parser to extended: true // parse data })); // app.use(bodyParser.json()); // app.post('/data', function(req, res) { var a = parseFloat(req.body.num1); var b = parseFloat(req.body.num2); res.send(sum.toString()); })

Use Jquery Ajax on client side bodyParser on server side:

Client side:

<form id="myForm" method="post"> Number 1: <input type="number" id="numa" name="numa" step="any"/><br> Number 2: <input type="number" id="numb" name="numb" step="any"/><br> <input type="number" id="answer" name="answer" readonly/> <input type="submit" value="Submit"/> </form> <div id="result"></div> <script> $(document).ready(function(){ $("#myForm").submit(function(event){ event.preventDefault(); var num1 = $('#numa').val(); var num2 = $('#numb').val(); $.ajax({ method: 'post', url: '/data', data: JSON.stringify({ num1: num1, num2: num2 }), contentType: 'application/json', success: function(data) { $('#answer').val(data); } }) }); }); </script>

And Server side:

app.use(bodyParser.urlencoded({ // body-parser to extended: true // parse data })); // app.use(bodyParser.json()); // app.post('/data', function(req, res) { var a = parseFloat(req.body.num1); var b = parseFloat(req.body.num2); res.send(sum.toString()); })

更多推荐

本文发布于:2023-07-31 02:36:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1340484.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:而不   页面   js   HTML   node

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!