Javascript JQuery表单插件是否将空数据发送到Node.js?

Javascript JQuery表单插件是否将空数据发送到Node.js?,javascript,jquery,node.js,express,Javascript,Jquery,Node.js,Express,html格式: <form id="importForm" enctype="multipart/form-data"> <p> <label for="ownerName">Owner Name<pow class="requiredFormItem">&nbsp

html格式:

<form id="importForm" enctype="multipart/form-data">

                        <p>
                            <label for="ownerName">Owner Name<pow
                                    class="requiredFormItem">&nbsp;*</pow></label><select id="ownerName"
                                name="ownerName"></select>
                        </p>
                        <p>
                            <label for="policyName">Policy Name<pow
                                    class="requiredFormItem">&nbsp;*</pow></label><select id="policyName"
                                name="policyName"></select>
                        </p>
                        <p>
                            <label for="partition">Custom Partition Name</label> <input
                                type="text" name="partition" id="partition" class="textField" />
                        </p>
                        <p>
                            <pow class="requiredFormItem">*&nbsp;</pow>
                            Required Fields
                        </p>
                        <p>
                            <input type="submit" id="importCampaignButton" class="submit"
                                value="Import" />
                        </p>
                    </form>
单击“提交”时,它告诉我:

 About to submit: ownerName=161&policyName=Global+Policy&partition=
在node.js上:

我正在URL上收听一篇帖子

app.post('/import', campaigns.importCampaign2);
还有印刷

exports.importCampaign2 = function (request, response){
utilities.debugLog('Import campaign...');
utilities.debugLog('request files? ' + request.files);
utilities.debugLog('request body? ' + JSON.stringify(request.body));
utilities.debugLog('request params? ' + JSON.stringify(request.params));
utilities.debugLog('request query? ' + JSON.stringify(request.query));
但我似乎什么也得不到

request files? undefined
request body? {}
request params? {}
request query? {}
我试图制作一个带有文件上传的表单,但它必须与IE9兼容,所以我不能使用html5。如果我执行ajaxSubmit(选项),JQuery表单插件可以工作,但是返回的文件是。。。字符串“[file Object]”和主体参数,而不是文件参数。。。猜测是表单必须发送,所以我尝试另一种方式,希望它能够发送实际的文件。但是它不再发送任何东西了

app.js安装程序:

app.set('port', process.env.PORT || 3333);
app.set('views', __dirname + '/views');
app.set('view engine', 'ejs');
app.set('view options', {layout: false});
app.use(require('morgan')('dev'));
app.use(require('body-parser')({ keepExtensions: true}));
app.use(require('cookie-parser')());
app.use(require('express-session')({ secret: 'mySecret', store: new MemoryStore({ reapInterval: 600000}) }));
app.use(require('method-override')());
app.use(function(req, res, next) {
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Headers", "X-Requested-With");
    next();
});
app.use(express.static(path.join(__dirname, '/public')));
app.all('*', function (req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header('Access-Control-Allow-Methods', 'PUT, GET, POST, DELETE, OPTIONS');
next();
});
@mscdex很有趣!它确实发送了一些东西!禁用body parser将是一件非常麻烦的事情,但通过它,我看到了我的价值观:

------WebKitFormBoundaryJo01BR3yUDBh094k
Content-Disposition: form-data; name="ownerName"

161
------WebKitFormBoundaryJo01BR3yUDBh094k
Content-Disposition: form-data; name="policyName"

Global Policy
------WebKitFormBoundaryJo01BR3yUDBh094k
Content-Disposition: form-data; name="partition"


------WebKitFormBoundaryJo01BR3yUDBh094k--

我已经解决了这个职位的同样问题。。

现在,在Express 4中,您需要为多部分/表单数据请求使用多部分解析模块。此类模块的一些示例有:(//)和


原因是在Express 4中,bodyParser()中间件被提取到它自己的模块()中,但新模块现在只支持application/json和application/x-www-form-urlencoded,因此您必须单独使用另一个模块进行多部分/表单数据处理。

如果您转储请求的内容(
request.on('data',function(d)){console.log(d.toString();});
)禁用主体解析器中间件后,输出是什么样子的?发布你的
应用程序。使用()
section,您可能没有包含bodyparser。只有在使用文件时才需要bodyparser。我错了吗?编辑了原始注释@mscdex@Dalorzo实际上,在Express4中,外部
主体解析器
模块现在只支持application/json和application/x-www-form-urlencoded,因此您必须单独使用另一个module用于多部分/表单数据处理。但是您可以使用不带文件的多部分表单。谢谢。现在尝试此操作将返回并告诉您它是否有效。是的。这就是问题所在。非常感谢。已经做了一天半了。
------WebKitFormBoundaryJo01BR3yUDBh094k
Content-Disposition: form-data; name="ownerName"

161
------WebKitFormBoundaryJo01BR3yUDBh094k
Content-Disposition: form-data; name="policyName"

Global Policy
------WebKitFormBoundaryJo01BR3yUDBh094k
Content-Disposition: form-data; name="partition"


------WebKitFormBoundaryJo01BR3yUDBh094k--