当前位置: 首页 > 知识库问答 >
问题:

JSON没有被发送到AJAX POST请求[关闭]

韩鸿波
2023-03-14
<form id="loginForm" name="loginForm">
   <div class="form-group">
   <input type="username" class="form-control" id="username" name="username" placeholder="Your username..." >
   </div>
   <div class="form-group">
   <input type="password" class="form-control" id="password" name="password" placeholder="Your password...">
   </div>
   <button class="btn btn-primary btn-block btn-round" id="loginButton" type="submit">Login</button>
</form>
//credits to @lndgalante
if (typeof window !== 'undefined') {
  window.addEventListener('load', () => {
        const form = document.getElementById('loginForm');

        form.addEventListener('submit', async (event) => {
        event.preventDefault();

        const elements = event.target;
        const username = elements.username.value;
        const password = elements.password.value;
        const dataToSend = { username, password };

        try {

         console.log(JSON.stringify(dataToSend)); //To check variables are being passed correctly

         return await fetch('/login', {
            method: 'POST',
            body: JSON.stringify(dataToSend),
            headers: { 'Content-Type': 'application/json' }
          });
        } catch (error) {
          console.log(error);
        }
      });
    });
  };
app.post('/login', async (req, res) => {
    try {
      const username = req.body.username;
      const password = req.body.password;
      console.log(username, password, req.body); //To check variables are being passed correctly
    ...
    }
});

编辑:我正在使用const app=express();并且在我的node.js文件中有app.use(BodyParser.urlencoded({extended:true}));

共有1个答案

濮阳翔
2023-03-14

必须使用正文解析器,否则NodeJS应用程序将不知道如何解释请求正文中收到的字符串。

npm install --save body-parser

var bodyParser = require('body-parser')
app.use( bodyParser.json() );       // to support JSON-encoded bodies
app.use(bodyParser.urlencoded({     // to support URL-encoded bodies
  extended: true
})); 

app.use(express.json());
app.use(express.urlencoded());
app.use(express.multipart());
 类似资料:
  • 问题内容: 我在HttpURLConnection和OutputStreamWriter方面挣扎。 代码实际上到达了服务器,因为我确实收到了有效的错误响应。发出了POST请求,但服务器端未收到任何数据。 正确使用此东西的任何提示均受到高度赞赏。 该代码在AsyncTask中 我正在尝试发送的JSON: 我从服务器得到的响应: 我应该得到的回应是: 服务器端PHP脚本: 以及Android Stud

  • 问题内容: 我是Web服务的新手,正在尝试使用python脚本发送以下基于JSON的请求: 如果我将以上内容粘贴到浏览器中,它将按预期工作。但是,我正在努力从Python发送请求。以下是我正在尝试的: 如何将apikey数据添加到请求中? 谢谢! 问题答案: 代替使用urllib2,您可以使用request。这个新的python lib确实写得很好,并且使用起来更加简单直观。 要发送json数据,

  • response.content=statuscode:401,reasonprace:'unauthorized',version:1.1,content:system.net.http.streamcontent,header:{ rlogid:t6ldssk%28ciudbq%60anng%7fu2h%3f%3cwk%7difvqn*14%3f0513%29pqtfwpu%29pdhcaj%

  • 问题内容: 我正在使用下面的代码发送http POST请求,该请求将对象发送到WCF服务。可以,但是如果我的WCF服务还需要其他参数怎么办?如何从Android客户端发送它们? 这是我到目前为止编写的代码: 问题答案: 使用POST发布参数: 你错过的部分在以下内容中,即如下。 其余的事情你都可以做到。

  • 我得到以下错误 响应数据为空。我做错了什么,或者我在代码中遗漏了什么?

  • 发送请求 发送同步请求 Web3j web3 = Web3j.build(new HttpService()); // defaults to http://localhost:8545/ Web3ClientVersion web3ClientVersion = web3.web3ClientVersion().send(); String clientVersion = web3Client