Как вызвать функцию из onclick с помощью Node.js - PullRequest
1 голос
/ 09 апреля 2019

Я новичок в использовании Azure, после того, как в течение многих лет использовал Google Apps Script для написания веб-приложений. Мне нужно было изменить способ работы до такой степени несовместимости с iPhone. Я использовал JavaScript и HTML, поэтому заново создал приложение с помощью node.js.

Я могу вернуть html-страницу и запустить сценарии на стороне клиента, однако мне нужно иметь возможность запускать сценарий на стороне сервера, чтобы не открывать базу данных SQL на стороне клиента.

Сценарий server.js выглядит следующим образом:

var http = require('http');
var fs = require('fs');
var path = require('path');

http.createServer(function (req, res) {
  res.writeHead(200, {"Content-Type": "text/html"});
  fs.createReadStream(path.resolve(__dirname, 'HTMLPage.html')) 
    .pipe(res);
}).listen(process.env.PORT || '3000'); // provide a default 


function processForm(form) {
  var firstName = form.firstName;
  var lastName = form.lastName;
console.log(firstName);
} 

HTMLPage содержит код формы и кнопку с командой onsubmit, которая запускает сценарий на стороне клиента, однако я не могу запустить сценарий на стороне сервера (моя попытка выделена жирным шрифтом). Подскажите, пожалуйста, где я ошибаюсь?

<!DOCTYPE html>
<html lang="en">
<script>
function post() {
  var first = document.getElementById("firstName").value;
  var last = document.getElementById("lastName").value;
window.alert('Thanks, we will contact you soon.');

processForm(form).init; //This is the bit which is not calling the script

 };
</script>

<head>
<meta charset="utf-8" />   
</head>

<body>
   <div id="formdiv">
       <form id="form" onsubmit="post();">
       <input type="firstName" class="form__input" id="firstName" name="firstName" />
       <label class="form__label" for="firstName"><span class="form__label-content">First Name</span></label>
       <input  type="lastName" class="form__input" id="lastName" name="lastName" />
       <label class="form__label" for="lastName"><span class="form__label-content">Last Name</span></label>                          
       <input  type="text" id="ddValues" name="ddValues" style="display:none" />
       <input  type="submit" name="submit" class="btn btn-block" onclick="post();">
       </form>

Вместо запуска скрипта, в консоли я получаю это сообщение:

Uncaught ReferenceError: processForm не определен на почте на HTMLInputElement.onclick

Кто-нибудь знает, что мне здесь не хватает? Спасибо

EDIT

На основе информации от ruggierom & naga - elixir - jar приведен обновленный скрипт. Мои результаты теперь дают мне 3 неопределенных объекта.

Server.js

var http = require('http');
var fs = require('fs');
var path = require('path');

http.createServer(function (req, res) {

  res.writeHead(200, {"Content-Type": "text/html"});
  fs.createReadStream(path.resolve(__dirname, 'HTMLPage.html')) 
    .pipe(res);

  console.log(req.body);

}).listen(process.env.PORT || '3000'); // provide a default 

HTML

<head>
    <meta charset="utf-8" />
   </head>
<body> 
<form id="form" name="form" method="post">
     <input type="firstName" class="form__input" id="firstName" name="firstName" />
    <input type="lastName" class="form__input" id="lastName" name="lastName" />                
    <input type="submit" name="submit"> 
</form>
</body>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...