【发布时间】:2018-03-06 10:05:03
【问题描述】:
我正在尝试使用 vanilla JS 进行一些 ajax 调用。 在后端,我正在使用 express-framework 中的节点。
我想发送的数据似乎从未真正到达我的后端。有人知道发生了什么吗?
我的 Javascript:
<form id='ajax_form' method='POST' action='/admin/new/tag'>
<input type='text' name='tag' id="tag">
<button type='submit'>Create new tag</button>
</form>
<script>
var ajaxForm = document.querySelector("#ajax_form").addEventListener("submit", function(e){
e.preventDefault();
var form = e.target;
var data = new FormData(form);
var request = new XMLHttpRequest();
request.onreadystatechange = function(){
if(request.response){
[...]
}
}
request.open(form.method, form.action)
request.send(data);
});
</script>
当我遍历数据对象时,一切似乎都正常,返回了我想通过表单提交的键和值。
这是我的后端设置:
var express = require("express"),
app = express(),
mysql = require("mysql"),
bodyParser = require("body-parser");
app.use(bodyParser.urlencoded({extended: true}));
app.post('/admin/new/tag', function(req, res){
var tag = {tag_name: req.body.tag};
var q = 'INSERT INTO tags SET ?';
connection.query(q, tag, function(error, results, fields){
if (error) throw error;
res.send('succeed');
});
});
当我console.log(req.body.tag) 时,我只得到Undefined 而req.body 只是一个空对象。
我的数据库也抛出了一个错误,因为键 tag_name 不应该为 NULL。
当我查看网络面板时,我收到 503 服务不可用。
感谢您的回复和意见!
【问题讨论】:
-
是否支持 action='/...'?是网址吧?它不能是/...
-
我只是认为这些对我的问题并不重要,所以我省略了它们。支持它们。我最初将其设为正常的后期请求,然后一切正常。如果需要,我可以添加 url:s。
-
是的!请添加正确的代码以避免混淆。尝试控制台记录请求对象。如果你得到一些东西,请寻找 req.body
-
那么,当您在控制台的网络面板中检查请求时,您会看到什么?
标签: javascript node.js ajax express