我需要使用 node.js 和 Request 以编程方式将多个值提交到 POST(在本例中为美国各州)。
例如,HTML 表单可能是
<select name="stateprov[]" id="stateprov" multiple="multiple" >
后跟 50 个选项...,每个州一个
提交的表单数据看起来像
stateprov%5B%5D=CA&stateprov%5B%5D=WI
我如何使用 Request 执行此操作?鉴于我有一系列状态,['CA','WI'},我已经尝试过
form['stateprov[]'] = states
fails
it generates stateprov%5B%5D[0]=WI&stateprov%5B%5D[1]=CA as the output
form['stateprov[]'] = states.join(',') 也不起作用
顺便说一句,Node 人,我真的很想喜欢这个项目,有很多很酷的东西,但是你们的文档不够好。
跟进:我认为问题可能是 Request ( https://npmjs.org/package/request ) 使用 qs ( https://npmjs.org/package/qs ) 对表单数据进行编码,并添加了无关的 [0] 和 [1]。 Node 的内置查询字符串 ( http://nodejs.org/api/querystring.html#querystring_querystring_stringify_obj_sep_eq) 执行我想要的编码。
跟进 #2:与 Mikeal Rogers 聊天,他在支持 Request 方面做得很好,他基本上说我不能在 Request 中这样做。因为我没有利用 Request 的许多很酷的特性,所以我将看看更基本的 http。
最佳答案
偶然发现了这个问题,但从未使用 reSTLer 解决它。我确实发现它可以使用 npm 模块 'request' Just do
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
})
我将其包装在 Q 库中以做出 promise 。效果很好。有点痛苦,因为我需要切换库,但希望这对以后偶然发现这个问题的人有所帮助。
关于javascript - 如何在 Node.js 请求中发布多个相同名称的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21534993/