假设我已使用以下代码发送数据:
$.ajax({
type: "POST",
url: "/save/" + #{key},
data: transitions2,
success: function (data) {
},
dataType: "json"
});
其中transitions2
是分层JS对象。
现在我怎么能在服务器端完整地收到它
router.post('/save/:key', function(req, res) {
// where is my data here?
});
更新
我找到了有关身体解析器的信息,发现我的网站模板已经包含了它们。特别是,app.js
包含:
...
var bodyParser = require('body-parser');
...
// uncomment after placing your favicon in /public
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use('/data', express.static(path.join(__dirname, '../data')));
app.use('/', index);
...
所以我在index.js
写道:
...
router.post('/save/:key', function(req, res) {
var transitions = req.body;
image_data.save_transitions(req.params.key, req.query.postfix, transitions);
});
...
不幸的是,transitions
包含
在客户端,它包含
即。充满了数据。
可能是什么问题?
更新2
我试着做
$.ajax({
type: "POST",
url: "/save/" + #{key},
data: JSON.stringify(transitions2),
success: function (data) {
}
});
我现在在Fiddler2
看到,那个完整的Json被传递了。
[{"start_image":"20170402_1_NATURAL_COL0R","end_image":"20170409_1_NATURAL_COL0R","transition_classes":["no_transition","some_activity"]},...
不幸的是,在服务器端,我观察到截断和损坏的字符串
(等号不应该是JSON)。
JSON.parse失败。
答案 0 :(得分:2)
使用body-parser中间件来检索数据。
npm install body-parser
在快递应用中配置。
在下面找到示例代码
var bodyParser = require('body-parser');
app.use(bodyParser.json());
然后在您的路由器中使用以下内容:
router.post('/save/:key', function(req, res) {
var data = req.body // here is your data
});
答案 1 :(得分:1)
问题仅在客户端。使用json发布复杂对象的Correc方法是:
$.ajax({
type: "POST",
url: "/save/" + #{key},
data: JSON.stringify(transitions2),
contentType: "application/json; charset=utf-8",
success: function (data) {
}
});
stringify
和contentType
是强制性的。
答案 2 :(得分:0)
前面:
axios.post('/attack', {
number:number,
count:count
},
{
headers:{contentType: "application/json; charset=utf-8"}
})
.then((response) => {
console.log(response);
})
.catch((error) => {
console.log(error);
});
}
后退:
const express = require('express')
const bodyParser = require('body-parser')
const app = express()
app.use(bodyParser.json())
app.post('/attack', (req, res) => {
let data = req.body
console.log(data)
res.send('200')
})
控制台日志:{ number: '(number)', count: '(count)' }