【问题标题】:JSONP req.body is not workJSONP req.body 不起作用
【发布时间】:2016-03-05 13:52:41
【问题描述】:

当我单击 angular 侧的按钮时,我正在使用 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?我想要它作为对象。谢谢...

【问题讨论】:

  • JSONP 适用于 GET 而不是 POST

标签: json node.js post jsonp


【解决方案1】:

你需要用这个改变data,所以它会推送一个对象而不是一个字符串:

$.ajax
    ({
        type: "POST",
        url: 'http://localhost:777/node',
        dataType: 'json',
        async: false,
        data: {userName: a.value, password: b.value}
    })

【讨论】:

    【解决方案2】:

    无法使用 JSONP 传输 POST json 数据,因为 JSONP 请求是通过将

    因此,您需要决定是走 JSONP 路线,还是使用正确 CORS 设置的 JSON 路线。如果是 JSONP,请将您的 Paypload 组织为一个对象,而不是 json,如果是 json,则通过添加 CORS 中间件来修改您的服务器以正确处理 CORS。

    【讨论】:

    • 是的,我忘了更改它,但 Michelem 也是对的。非常感谢你们。
    猜你喜欢
    • 2013-04-27
    • 2019-08-29
    • 1970-01-01
    • 2012-10-09
    • 2015-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-02
    相关资源
    最近更新 更多