获取时获取json值作为键

问题描述 投票:0回答:1

我不确定为什么会发生这种情况,但是当我通过获取POST发送它时,我一直将输入值作为键存储在json对象中]

从客户发送

<script type="text/javascript">
    $(function(){

        //show the modal when dom is ready
        $('#loginModal').modal('show');
    });

    async function postData(url = '',data) {

  // Default options are marked with *
  const response = await fetch(url, {
    method: 'POST', // *GET, POST, PUT, DELETE, etc.
    mode: 'no-cors', // no-cors, *cors, same-origin
    cache: 'no-cache', // *default , no-cache, reload, force-cache, only-if-cached
    credentials: 'same-origin', // include, *same-origin, omit
    headers: {
      'Content-Type': 'application/x-www-form-urlencoded'
    },
    redirect: 'follow', // manual, *follow, error
    referrerPolicy: 'no-referrer', // no-referrer, *no-referrer-when-downgrade, origin, origin-when-cross-origin, same-origin, strict-origin, strict-origin-when-cross-origin, unsafe-url
    body: JSON.stringify(data) // body data type must match "Content-Type" header
  });
  return response.json(); // parses JSON response into native JavaScript objects
}

    document.getElementById("loginButton").addEventListener('click',function(){
      console.log('sending data',document.getElementById("passholder").value)
        postData(`http://${window.location.hostname}:3000/authenticate`, {password: document.getElementById("passholder").value} )      
            .then(() => {console.log('returned from server') });
    })
</script>

Express中的索引js路由

router.post('/authenticate', function(req, res, next) {
  console.log(req.body)

});

我得到的记录

{ '{"password":"myinputvalue"}': '' }

我知道这个值已经是JSON,所以我无法解析它,有人知道如何从键中提取值。显然我不能做req.body.password .....有什么方法可以做req.body.child.value吗?任何信息都将是惊人的,谢谢。

我不确定为什么会发生这种情况,但是当我通过从客户端

使用Object.keys(req.body)获取密钥。即'{"password":"myinputvalue"}'

然后使用JSON.parse()将密钥解析为JSON。

然后只需在解析的JSON对象上使用.运算符即可获取password


const key = Object.keys(req.body)[0];
const parsedKey = JSON.parse(key);
const password = parsedKey.password;
    
node.js json express post fetch
1个回答
0
投票

使用Object.keys(req.body)获取密钥。即'{"password":"myinputvalue"}'

© www.soinside.com 2019 - 2024. All rights reserved.