【问题标题】:express: parameters are not directly accessible through request.body.paramNameexpress:参数不能通过request.body.paramName直接访问
【发布时间】:2014-06-29 08:20:39
【问题描述】:

我正在尝试从 Angular 应用程序提交表单:

 var formdata={
         date:$scope.myForm.date
        ,name:$scope.myForm.name
        ,mobile:$scope.myForm.phone
    };

$http({
        method:"POST"
        ,url:'/forms/submit'
        ,data:formdata
        , headers:{'Content-type':"application/x-www-form-urlencoded; charset=utf-8"}
    })

但是当我用request.body.date 请求它时,我变得不确定。打印request.body虽然参数是传的。

Listening on port 3000
'----   submitForm -----'
{ '{"date":"20140630","name":"asdf","phone":"12312"}': '' }

服务器代码使用body-parser:

app.use(bodyParser.urlencoded({
    extended: true
}));

当我打印request.body.name 时,我得到了undefined,但正如你所见,它就在那里。我做错了什么?

【问题讨论】:

    标签: node.js angularjs express mean-stack


    【解决方案1】:

    您需要先将 formdata 转换为 urlencoded 字符串,否则它会被序列化为 JSON(通过 $http)。这就是您目前在服务器端看到 JSON 的原因。

    如果页面上已经有 jQuery,则可以通过 $.param(formdata) 转换 formdata 对象并将其用作 data 值。

    【讨论】:

      猜你喜欢
      • 2015-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-01
      • 2011-01-09
      • 1970-01-01
      相关资源
      最近更新 更多