javascript - 如何在 Node.js 请求中发布多个相同名称的值

标签 javascript forms node.js post request

我需要使用 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/

相关文章:

javascript - 如何使用sequelize删除数据行?

javascript - 基于复选框的 jQuery Ajax 请求

javascript - Socket.io自动超时和传输错误

javascript - 在我的应用程序启动时创建所有路由是个好主意吗?

javascript - 下拉值在 nog 选项 Angular 中复制

javascript - 如何在CodeMirror 编辑器中设置HTML、CSS 和Javascript 模式?我想将所有内容组合在一个编辑器中

javascript - 如何使用 SVG 图形绘制 RGB 颜色选择器渐变

javascript - 尽管 novalidate 和 false 返回,表单提交后仍重新加载页面

php - 如何使用 php 构建服务器端脚本

node.js - Alexa-SDK 音频问题