nodejs express form如何提取formData里的键值对?

node.js 如何解析POST数据呢 - CNode技术社区
这家伙很懒,什么个性签名都没有留下。
有没有简单的实现?
分享一个啊,
用express啊,不用的话你也可以参考一个他的代码
使用express3时。直接req.body.你的参数
遵照express对req.body的对象来说吧
//要想使用express里的body对象,首先要在中间件扩展req.body对象 实现方式:app.use(express.bodyParser())
//在express是这样实现的:
//分三种情况,get请求,post表单简单提交(content-type: application/x-www-form-urlencoded), post表单详细提交(content-type: multipart/form-data)
(主要源码分析是在json.js中)
// 当是get请求/xx的时候,由于请求报文头不存在content-length头字段,所以会跳到判断第二种提交方式,由于是不存在content-length字段的所以(json, urlencoded, multipart)这三种情况都不存在,所以忽略掉
// 我们先只构建第一二种情况,post简单提交,当满足content-length的时候
/*var getBody = require(‘raw-body’);
getBody(req, {}, function(err, buf) {
//得到的是
req.body = buf.length
? qs.parse(buf, options)
} catch (err){
err.body =
return next(err);
// 就是通过使用raw-body这个文件模块本身,传入请求报文头对象,和对象,最后设计回调函数触发,回调函数的第二个参数就是返回构建的请求字符串 (xx=123&bb=456) ,赋给req.body就是一个通过qs模块处理的一个请求参数转变为请求对象的
req.on(‘data’)
req.on(‘end’)
要加上bodyparser
才可以的吧
CNode 社区为国内最专业的 Node.js 开源技术社区,致力于 Node.js 的技术研究。
服务器赞助商为
,存储赞助商为
,由提供应用性能服务。
新手搭建 Node.js 服务器,推荐使用无需备案的nodejs发送http请求,如何保持获取的数据,并且返回到页面 - CNode技术社区
这家伙很懒,什么个性签名都没有留下。
var data=&&;
router.post(’/report/get’,function(reqs,res){
var urlStr=’http://xxxxxxx/slot/list';//发送的请求地址
var body=reqs.//发送的字段{colNum,currentPage}
console.log(“colNum”+JSON.stringify(body));
var contentStr=queryString.stringify(body);
“hostname”:url.parse(urlStr).hostname,
“path”:url.parse(urlStr).path,
“method”:“POST”,
“port”:3000,
“headers”:{
‘Content-Type’: ‘application/x-www-form-urlencoded’,
‘Content-Length’: Buffer.byteLength(contentStr, ‘utf8’)
var httpModule = urlStr.indexOf(‘https’) === 0 ? https :
var req = httpModule.request(opt, function(httpRes) {
var buffers = [];
httpRes.on(‘data’, function(chunk) {
buffers.push(chunk);
httpRes.on('end', function(chunk) {
var wholeData = Buffer.concat(buffers);
var dataStr = wholeData.toString('utf8');
console.log('content'+wholeData);
data=wholeD
//res.send(JSON.stringify(buffers));
}).on('error', function(err) {
console.log('error ' + err);
//写入数据,完成发送
req.write(contentStr);
req.end();
res.send(JSON.stringify(data));
由于异步的原因,返回的data都是初始的时候的数据,怎样才能保持下来,返回到页面
把最后一句放到你注释的那一行。出错的时候再发送另一个response。
建议用pipe,最快的可能是用request+pipe,试试:
你这个问题  我今天刚写完
你这个回答有什么意义?
你们这些回答有卵用
CNode 社区为国内最专业的 Node.js 开源技术社区,致力于 Node.js 的技术研究。
服务器赞助商为
,存储赞助商为
,由提供应用性能服务。
新手搭建 Node.js 服务器,推荐使用无需备案的4594人阅读
Jquery的$.ajax方法可以实现ajax调用,要设置url,post,参数等。
如果要提交现有Form需要写很多代码,何不直接将Form的提交直接转移到ajax中呢。
以前的处理方法
如Form代码如下:
&form id=&Form1& action=&action.aspx& method=&post& &
名称:&input name=&name& type=&text& /&&br /&
密码:&input name=&password& type=&password& /&&br /&
手机:&input name=&mobile& type=&text& /&&br /&
说明:&input name=&memo& type=&text& /&&br /&
&input type=&submit& value=&提 交& /&
当提交后,会跳转到action.aspx页面。并可以通过Request.Params[&name&]可以取到值。
如果不想刷新页面使用ajax,就又要在$.ajax中指定url,等信息,不好维护。
在网上查了一下,老早以前老外就有解决方案了。使用ajax直接按照Form信息直接提交。不刷新页面。
参考资料:
很好用,但我还是愿意自己写个自己用的。
核心JS代码
//将form转为AJAX提交
function ajaxSubmit(frm, fn) {
var dataPara = getFormJson(frm);
url: frm.action,
type: frm.method,
data: dataPara,
success: fn
//将form中的值转换为键值对。
function getFormJson(frm) {
var o = {};
var a = $(frm).serializeArray();
$.each(a, function () {
if (o[this.name] !== undefined) {
if (!o[this.name].push) {
o[this.name] = [o[this.name]];
o[this.name].push(this.value || '');
o[this.name] = this.value || '';
ajaxSubmit方法第一个参数,是要提交的form,第二个参数是ajax调用成功后的处理函数。
将form的action传递给ajax的url,form的method传递给ajax的type,再将格式化后的表单内容传递给data。
getFormJson方法将form的元素转化为json格式键值对。形如:{name:'aaa',password:'tttt'},注意将同名的放在一个数组里。
$(document).ready(function(){
$('#Form1').bind('submit', function(){
ajaxSubmit(this, function(data){
alert(data);
return false;
在ajaxSubmit方法调用前,可验证数据是否正确,在alert(data)处可加入自己调用返回后处理代码。
在调用ajaxSubmit方法后,必须添加语句防止Form真实提交。
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:11720次
排名:千里之外
(window.slotbydup = window.slotbydup || []).push({
id: '4740881',
container: s,
size: '200,200',
display: 'inlay-fix'

我要回帖

更多关于 nodejs formdata 的文章

 

随机推荐