当我点击角度侧的按钮时,我正在使用nodejs和angular它创建了一个json帖子,但由于跨域问题,我使用JSONP。当我试图通过JSONP获取我从客户端发送的数据时,我得到类似的东西;
{ '{"userName": "something", "password" : "123"}': '' }
我是从我的server.js上的req.body获得的。
这是我的服务器端代码
app.post('/', function(req,res){
console.log("consoleeee:" + req.body);
res.end();
});
这里我的客户端功能在单击按钮时起作用
function loginPageLogin(a, b, c, d, e, f, g, h, i, j) {
$.ajax
({
type: "POST",
url: 'http://localhost:777/node',
dataType: 'jsonp',
async: false,
data: '{"userName": "' + a.value + '", "password" : "' + b.value + '"}'
})
我如何正确获得req.body?我希望它作为对象。谢谢......
答案 0 :(得分:1)
无法使用JSONP传输POST json数据,因为JSONP请求是通过附加< script>来发送的。标记到页面正文,意味着post params无法发送,只能获得params。这也意味着您发送的数据需要是键/值对,而不是JSON。它也不能同步。
因此,您需要决定是否要使用适当的CORS设置进入JSONP路由或JSON路由。如果是JSONP,请将paypload组织为对象,而不是json,如果是json,请修改服务器以通过添加CORS中间件来正确处理CORS。
答案 1 :(得分:-1)
您需要更改data
,因此它会推送一个对象而不是字符串:
$.ajax
({
type: "POST",
url: 'http://localhost:777/node',
dataType: 'json',
async: false,
data: {userName: a.value, password: b.value}
})