从基本表格处理请求

时间:2017-06-10 13:54:25

标签: javascript node.js

我在处理来自Post表单的req时遇到问题。

表格看起来像那样

<form action="/" method="POST">

     <div class="form-group">
       <label for="city-input">City name</label>
      <div class="col-10">
       <input class="form-control" type="text" id="city-input" name="map-city">
      </div>
       <input type="checkbox" aria-label="..."/>
       <label style="color: #737373;font-family: 'Open Sans', sans-serif;line-height: 30px;">Choose or type</label>
      </div>

       <div class="form-group">
        <label for="example-text-input">Symbol</label>
        <div class="col-10">
        <input class="form-control" type="text" id="example-text-input" name="map-symbol">
        </div>
      </div>
      <button type="submit" class="btn btn-primary">Submit</button>          
</form>

我尝试将每个值保存到可行的

router.post('/', jsonParser, function(req, res, next){

 var test = req.body;
 var test0 = test.map-city;
 var test1 = test.map-symbol;

});

当我检查什么是req.body我得到

Object{map-city: "downtown", map-symbol: "dt"}

如何处理此问题以将每个属性保存为字符串

现在我收到错误 - ReferenceError:city未定义

谢谢

2 个答案:

答案 0 :(得分:1)

使用点符号在这里不起作用,因为如果您尝试使用点符号访问带有连字符的对象属性(通常称为kebab案例),javascript将引发错误。您应该使用括号表示法:

&#13;
&#13;
var test0 = test['map-city'];
 var test1 = test['map-symbol'];
&#13;
&#13;
&#13;

答案 1 :(得分:1)

Object{map-city: "downtown", map-symbol: "dt"}

将输入标记中的name属性更改为map_city,它将起作用。

<input class="form-control" type="text" id="city-input" name="map_city">

节点将您的代码理解为test.map减去城市(-被视为减法符号)。同样的逻辑也适用于其他输入字段。