use*_*300 3 javascript forms post request node.js
我需要使用node.js和Request以编程方式向POST提交多个值(在本例中为美国各州).
例如,HTML表单可能是
<select name="stateprov[]" id="stateprov" multiple="multiple" >
Run Code Online (Sandbox Code Playgroud)
其次是50个选项......,每个州一个
提交的表单数据看起来像
stateprov%5B%5D=CA&stateprov%5B%5D=WI
Run Code Online (Sandbox Code Playgroud)
我怎样才能使用Request?鉴于我有一系列状态,['CA','WI'},我试过了
form['stateprov[]'] = states
fails
it generates stateprov%5B%5D[0]=WI&stateprov%5B%5D[1]=CA as the output
Run Code Online (Sandbox Code Playgroud)
form ['stateprov []'] = states.join(',')也不起作用
BTW,Node人,我真的很喜欢这个项目,有很多很酷的东西,但是你的文档并不是很好.
后续:我认为问题可能是Request(https://npmjs.org/package/request)使用qs(https://npmjs.org/package/qs)对表单数据进行编码,并添加了无关的[ 0]和[1].节点的内置的queryString(http://nodejs.org/api/querystring.html#querystring_querystring_stringify_obj_sep_eq)做我想要的编码.
后续#2:与Mikeal Rogers聊天,他在支持请求方面表现出色,他基本上说我不能在请求中这样做.由于我没有利用Request的许多很酷的功能,我会看一下更基本的http.
Eug*_*e G 12
偶然发现这个问题并且从未使用restler工作.我确实发现它使用npm模块'请求'正常工作
import request from 'request';
let data = { subject: 'a message', recipients:['person1@gmail.com', 'person2@gmail.com'] }
// define your data above. I was having issues with the recipients needing to repeat
let options = {
form: data, qsStringifyOptions: {arrayFormat: 'repeat'}
}
request.post(url, options, function(err, res, body){
//callback. note request sends 3 params to callback
})
Run Code Online (Sandbox Code Playgroud)
我将它包装在Q库中以做出承诺.工作得很好.有点痛苦,因为我需要切换库,但希望这有助于soemone后来偶然发现.