首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对象不传递/获取-Post请求/API/NodeJS/Browser

对象不传递/获取-Post请求/API/NodeJS/Browser
EN

Stack Overflow用户
提问于 2020-12-25 21:24:34
回答 1查看 44关注 0票数 0

问题:在JavaScript中,似乎没有创建一个JavaScript中由注册表单中的输入数据创建的对象。

Tried:

我检查了是否用{data}引用了整个对象,而只是数据mistake

  • adding

  • 搜索了其他在线资源,但是

  • 在JavaScript对象上再读一遍,看我是否做了一个简单的

调试字符串来给我提示(我将列出下面的代码)

相关代码

signup.html(每个片段按自上而下的顺序排列):

代码语言:javascript
复制
<form id="signup-form" name ="signup-form">
    <input class="login-form-field" type="text" name="user" placeholder="username">
    <input class="login-form-field" type="text" name="email" placeholder="email">
    <input class="login-form-field" type="password" name="dob" placeholder="date of birth">
    <br>
    <!--<button class="actionButton"></button>-->
    <INPUT TYPE="button" NAME="button" Value="Click" onClick="signupData(this.form)">
</form>
代码语言:javascript
复制
//last of the markup body with Browserify compiled JavaScript files linked for functionality

<script src="browserify/builds/genKey.js"></script>
<script src="browserify/builds/SignUp.js"></script>
<script  LANGUAGE="JavaScript">
    function signupData(form) // add to this script
    {
      console.log("signup data is starting");
      var user = form.user.value;
      var email = form.email.value;
      var dob = form.dob.value;

      genSKey();
      genPKey();

      var skey = getSKey();
      
      // var enUser = encryptMes(user);
      // var enEmail = encryptMes(email);
      var endob = encryptMes(dob);

      var data = { name: "LifeNet", members: { user: {profilePic: {}, endob, listeners: {}, listening: {}, friends: {}, requested: {}, blocked:{}, channel: false} } }
      apiPost({data});
      // pass the signup function in here

      // hash the variables and send to celox network
      console.log(JSON.stringify({data}));
      alert (`copy and save your Private Key to somewhere safe: ${skey}`);
    }
</script>

signup.js (预浏览生成):

代码语言:javascript
复制
window.apiPost = function({data})

{  
    fetch("https://goldengates.club:3000/api/passData", 
        {
            method: "post",
            headers: { "Content-Type": "application/json" },
            body: JSON.stringify({data})
        }
    );
}

build.js (预浏览生成):

代码语言:javascript
复制
var eccrypto = require("eccrypto");

window.genSKey = function()
{
    var secretKey = eccrypto.generatePrivate();
    var SKey = JSON.stringify(secretKey);

    localStorage.setItem("skey", SKey);
    console.log(SKey);
    alert(`your private key is ${SKey}`)
}
window.genPKey = function()
{
    var skey = localStorage.getItem("skey");

    var SKey = JSON.parse(skey);

    let publicKey;
    if(SKey != null)
    {
        publicKey = eccrypto.getPublic(SKey);
        localStorage.setItem("pkey", JSON.stringify(publicKey));

        return;
    }

    publicKey = eccrypto.getPublic(privateKey);
    localStorage.setItem("pkey", JSON.stringify(publicKey));

    return;
}

window.getPKey = function()
{
    var PKey = localStorage.getItem("pkey");

    var pkey = JSON.parse(PKey);

    return pkey;
}

window.getSKey = function()
{
    var SKey = localStorage.getItem("skey");

    var skey = JSON.parse(SKey);

    return skey;
}

window.encryptMes = function(data)
{
    //for this you need to get the sender's public key to encrypt the message
    if (localStorage.getItem("pkey") === null) 
    {
        if (localStorage.getItem("skey") === null) 
        {
            genSKey();
            genPKey();
        }
    }
    var pkey = getPKey();
    encryptedMes = eccrypto.encrypt(pkey, Buffer.from(data));
    return encryptedMes;
}

window.decryptMes = function(data)
{
    if (localStorage.getItem("skey") === null) 
    {
        genSKey();
    }
    var skey = getSKey();
    decryptedMes = eccrypto.decrypt(SKey, data);
    return decryptedMes.toString();
}

window.encryptData = function()
{
    genSKey();
    genPKey();

    enMes = encryptedMes(/*add a document search for all fields on input form in login*/);
}

window.decryptData = function() {}

错误码

浏览器:

除了function.

  • Suspicious中的console.log(JSON.stringify({data}));之外,
  1. 还运行signup.html文件中的所有内容,因为使用用户数据创建的对象应该已经创建并打印到控制台。

我的API控制台:

  1. 我不会引用API代码,因为在我看来,对象只是没有被发布到它,而不是问题所在。

代码语言:javascript
复制
TypeError: Cannot read property 'name' of undefined
    at dataPool.setData (/home/main/public_html/Cypher-Network/src/app/data-Pool.js:64:27)
    at /home/main/public_html/Cypher-Network/src/index.js:198:12
    at Layer.handle [as handle_request] (/home/main/public_html/Cypher-Network/node_modules/express/lib/router/layer.js:95:5)
    at next (/home/main/public_html/Cypher-Network/node_modules/express/lib/router/route.js:137:13)
    at Route.dispatch (/home/main/public_html/Cypher-Network/node_modules/express/lib/router/route.js:112:3)
    at Layer.handle [as handle_request] (/home/main/public_html/Cypher-Network/node_modules/express/lib/router/layer.js:95:5)
    at /home/main/public_html/Cypher-Network/node_modules/express/lib/router/index.js:281:22
    at Function.process_params (/home/main/public_html/Cypher-Network/node_modules/express/lib/router/index.js:335:12)
    at next (/home/main/public_html/Cypher-Network/node_modules/express/lib/router/index.js:275:10)
    at /home/main/public_html/Cypher-Network/src/index.js:62:3

任何形式的帮助和解释都是非常感谢的,因为我对JavaScript的工作方式非常陌生。

EN

回答 1

Stack Overflow用户

发布于 2020-12-25 21:46:06

您是否正在使用NodeJs和像express这样的框架?如果是,则必须确保后端能够传递传入的JSON请求。如果使用express,则只需使用express.json()中间件即可。请确保将其放在其他中间件的顶部或cors中间件之后,如下所示

代码语言:javascript
复制
app.use(express.json())

它将解析来自前端的传入数据。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65451910

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档