首页 > 解决方案 > 当我从服务器发送 json 信息时,客户端打印“未定义”消息

问题描述

当我单击“ajaxsend”按钮时,结果在控制台上显示“未定义”。

如何检查函数 res.json 是否正常工作?

应用程序.js

var express = require('express')
var app = express()
var bodyParser = require('body-parser')

app.listen(3000, function() {
console.log("start!! express server on port 3000");
});

app.use(express.static('public'))
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({extended:true}))
app.set('view engine', 'ejs')

app.post ('/ajax_send_email', function(req, res){
console.log(req.body.email)
var responseData = {'result':'ok','email':req.body.email}
console.log(responseData)
res.json(responseData)
});

表单.html

<!DOCTYPE html>
<html>
  <head>
    <meta charset="uft-8">
    <title>email form</title>
  </head>
  <body>
    <form action="/email_post" method="post">
      email : <input type="text" name="email"><br/>
      submit <input type="submit">
    </form>
    <button class="ajaxsend">ajaxsend</button>

    <div class="result"></div>

    <script>
      document.querySelector('.ajaxsend').addEventListener('click',function(){
        var inputdata = document.forms[0].elements[0].value;
        sendAjax('http://127.0.0.1:3000/ajax_send_email',inputdata);
      })

      function sendAjax(url, data){
        var data = {'email' : data};
        data = JSON.stringify(data);

        var xhr = new XMLHttpRequest();
        xhr.open('POST', url);
        xhr.setRequestHeader('Content-Type', "application/json");
        xhr.send(data);

        xhr.addEventListener('load', function() {
          console.log(xhr.reponseText);
        });
      }
    </script>
  </body>
</html>

我希望控制台在输入文本“email”中显示“{result:ok, email:content},但实际输出是“未定义”。

标签: javascriptnode.jsexpress

解决方案


推荐阅读