使用AJAX,node / express和mongoDB(mongoose)发布表单到达服务器但不传递内容

时间:2018-01-09 12:09:02

标签: javascript node.js ajax mongodb

我的HTML

中有一个表单和一个AJAX脚本
<form id="myForm" name="myForm">
    <textarea name="message" id="message">Some content here...</textarea>
    <br>
    <input type="submit">
</form>
******
<script>
    (function(){
         var xhr;
         var data=document.getElementById('myForm');
         data.addEventListener('submit',makeRequest);

         function makeRequest(e){
             e.preventDefault();
             var formData=new FormData(data);

             xhr= new XMLHttpRequest()
             xhr.onreadystatechange=function(){
                 if (xhr.readyState === 4 && xhr.status===200) {
                     console.log(xhr.response)
                   }
                          };
             xhr.open('POST','/api/clicks',true);
             xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
             xhr.send(formData);
               }
      })()
</script>

/ api / clicks资源加载到/ app / routes文件夹中的index.js文件中。

app.route('/api/clicks')
            .post(clickHandler.addClick)

对象和方法clickHandler.addClick位于控制器文件clickHandler.server.js中,使查询成为mongo。

function clickHandler(){
       this.addClick=function(req,res){
             Clicks /*This is the model defined in other file
                      new Schema({text:String})*/
                  .create({text: req.body}, function (err, res) {
                   if (err) return err;
                         console.log("saved!")
                    })
            }
     }

服务器位于server.js文件中。

var express=require('express')
var bodyParser=require("body-parser")
var routes=require('./app/routes/index.js')
var mongoose=require('mongoose')

var app=express()
app.use(bodyParser.urlencoded({ extended: false }))
app.use(function (req, res) {
   res.setHeader('Content-Type', 'text/plain')
   res.write('you posted:\n')
   res.end(JSON.stringify(req.body, null, 2))
})
mongoose.connect(....)
routes(app)
app.listen(3000)

似乎帖子可以保存控制台标记!并且mongo控制台中的检查表明添加了一个新文档,但默认情况下只添加了前两个字段(__id和__v),没有关于表单文本的内容。(?)。还要检查google开发工具-network在标题的表格数据中显示表格的文字。

0 个答案:

没有答案