我的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在标题的表格数据中显示表格的文字。