2016-11-08 73 views
0

此问题标题已被编辑。原始标题是“我如何在表单中提交字符串并将其作为url中的请求参数应用?”通过html表单获取request.params?


想象一个简单的服务器,其中接收字符串作为路由参数,例如,与localhost:3000/hello它服务一个页面包含'你好'。

这是很容易实现的,这里是一个简单Express服务器这样做:

var express = require("express"); 
var app = express(); 

app.get("/:string", function(req, res) { 
    res.send(req.params.string); 
}); 

app.listen(3000); 

是否有可能通过一种形式来提供字符串?

回答

0

这不就是什么隐藏的参数开始......?

<form action="http://www.example.com" method="GET"> 
    <input type="hidden" name="a" value="1" /> 
    <input type="hidden" name="b" value="2" /> 
    <input type="hidden" name="c" value="3" /> 
    <input type="submit" /> 
</form> 

我不会指望任何浏览器保留操作URL中的任何现有查询字符串。

作为规范(RFC1866,第46页; HTML 4.x的部分17.13.3)状态:

如果该方法的“get”该动作是HTTP URI,用户代理取的值行动,附加一个'?'然后附加表单数据集,使用“application/x-www-form-urlencoded”内容类型进行编码。 也许人们可以对action-URL进行百分比编码,以嵌入问号和参数,然后交叉手指,希望所有浏览器都会像这样保留该URL(并验证服务器是否理解)。但我永远不会依赖这一点。

顺便说一下:它对于非隐藏的表单字段没有什么不同。对于POST,动作URL可以包含查询字符串。经由

0
  • 将值分配给req.params一个html形式不是固有地可行。 表单可以轻松地将值分配给req.query

  • 定义为在快速4.x API Reference描述REQ,则params和req.query:

req.params
此属性是包含映射到指定的路线“参数”属性的对象。例如,如果您有route/user /:名称,则“name”属性可用作req.params.name。该对象默认为{}。

req.query
此属性是包含路由中每个查询字符串参数的属性的对象。如果没有查询字符串,则它是空对象{}。

  • Arjan的回答在这个question援引隐藏式输入这可能是在某些使用情况很有帮助。