简体   繁体   中英

Submit value from HTML form to Node-js

I want to submit input value from HTML form to Node-js. Node-js should assign that value as an argument to a Solidity function. But the Error: TypeError: Cannot read property 'oinput' of undefined is shown. What should i do? Please help a beginner.

HTML:

<!DOCTYPE html>
<html>
<head>
<title>Alireza</title>
<body>
<form id="FORM" name="FORM" method="POST" action="http://127.0.0.1:1408">
    <input id="Finput" name="oinput" value="Null" onclick="this.form.submit()"/>

</form>
<script>
document.forms[0].oinput.value=prompt("Type a thing: ","Here ...");
</script>
</body>
</html>

app.js:

var express=require('express');
var app=express();
var fs=require('fs');
var http = require('http');
var bodyParser=require('body-parser');
var Web3=require('web3');
var web3=new Web3('ws://127.0.0.1:8545');

var YerevanJSON="E:/Alireza/build/contracts/Yerevan.json";
var YerevanJS=JSON.parse(fs.readFileSync(YerevanJSON));
var YerevanABI=YerevanJS.abi;

var Yerevan=new web3.eth.Contract(YerevanABI, "0x1E6B6524e7da86bafa5ac948b38dA68e6841f0c7");
    Yerevan.defaultAccount="0x152AfF6BBF98F2FF2EFAdA32E2ba85CC231cbA13";

app.post("/", function(q,r){

Yerevan.methods.eval(q.body.oinput).send({from:"0x33aa0ba26Dc247BA5d94545344c413949B746360"});
});

app.listen(1408, err=>{ console.log('ERROR')});

Solidity:

    pragma solidity ^0.5.12;

    contract Yerevan{
    string public city;
    function eval(string memory sense) public returns(string memory){
        city=sense;
        return city;
       }
    }

You have included body-parser on to the file but hasn't asked the app use it. add below line

 const bodyParser = require("body-parser");
 // for parsing application/json
 app.use(bodyParser.json());
 //for parsing application/xwww-form-urlencoded
 app.use(bodyParser.urlencoded({ extended: true }));

You are using var, start using const and let instead.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM