Sails.js 表单帖子未提交任何数据

Posted

技术标签:

【中文标题】Sails.js 表单帖子未提交任何数据【英文标题】:Sails.js form post not submitting any data 【发布时间】:2015-06-28 04:00:36 【问题描述】:

最近我在发布表单时遇到了一个不寻常的问题。当没有附件或附件图像文件大小小于 100kb 时,表单发布工作正常。但是,当我尝试上传大于 100kb 的文件时,表单中没有任何元素被发布/提交。当我console.log() 时,它给出的值未定义。我不明白是什么导致了问题。控制台屏幕上未显示任何错误。谁能帮忙解决这个问题?

var name = req.param('name');
console.log(name);

我得到的结果是undefined

我在 Windows 8.1 上使用sails v0.10.5。我使用 postgres 作为我的数据库。

【问题讨论】:

你确定req.param('name'); 正在返回一个值吗?它也必须是一个字符串值,所以你可以尝试做name.toString(); 不,它没有返回值。上传大小超过 100kb 的附件时,不会提交表单中的任何内容。 console.log(req.param('name') 也返回 undefined。 你在使用 FormData 吗? 我正在使用 enctype="multipart/form-data" 【参考方案1】:

使用 skipper,您必须将所有输入文件放在表单末尾。 否则它可能会出错。

【讨论】:

是的,是船长问题。在我的表单中,我有许多与之相关的文本字段和附件。因此,使用船长无法正常工作。所以我使用jquery文件上传上传文件和所有文本字段的普通表单提交。任何方式感谢您的回复。 这是一个讨厌的。我在使用表单数据和 ajax 时遇到了同样的问题。将所有文件附加到最后解决了问题!非常感谢您节省了我的时间。 如果我们有超过 1 个文件字段,它可能仍然无法正常工作 这个问题解决了吗?【参考方案2】:

有同样的问题,原来输入的顺序很重要,就在github skipper 页面上说

重要的是要认识到上述好处(文本参数)依赖于一个关键的简化假设:用户代理在多部分 HTTP 请求正文中的第一个文件参数之前发送任何文本参数。例如,在 html 表单中,这意味着将所有标签放在其他输入之后。如果您不想以这种方式布置表单,则需要使用 AJAX 来提交它

【讨论】:

【参考方案3】:

req.param方法用于获取url参数、body参数、查询参数。 (reference)

如果你使用multipart/form-data上传文件,Sails使用skipper解析数据,你可以像下面这样简单地获取文件

req.file('name').upload(function (err, uploadedFiles)
  if (err) return res.send(500, err);
  return res.send(200, uploadedFiles);
);

【讨论】:

文件上传工作正常,没有问题。我遇到的唯一问题是当我上传大小高于 100kb 的图像时,没有提交其他表单元素。但是当我上传大小小于 100kb 的图像时,表单中的每个元素都与图像一起提交。这听起来很愚蠢,但我正面临这个问题。而且不知道出了什么问题。 很有趣,你能提供一个小sn-p吗?我想找出问题 这里是表格:<form method="post" action="testin" enctype="multipart/form-data" > <input type="file" name="file"> <input type="text" name="name"> <textarea name="test" class="form-control" ></textarea> <input type="submit" value="submit" > </form> testin :function(req,res) req.file('file').upload( saveAs: function(file, cb) cb(null, file.filename); ,dirname: "../../assets/Questions/" ,function (err, files) console.log(files); res.json( body:req.body, name:req.param('name'), text:req.param('test') ) ) ,【参考方案4】:

最好使用 blueimp jquery 文件上传插件。它有多种功能可以帮助你。

【讨论】:

我使用 blueimp fileupload 上传图片。您的回复很有帮助。【参考方案5】:

我建议查看sails....的官方文件上传文档。

http://sailsjs.org/#!/documentation/concepts/File-Uploads

我按照这些步骤操作,它对我有用(在sails v 0.11 上)。也许您在此过程中错过了什么?

【讨论】:

文件上传不是我的问题。这是由于船长没有提交我的表单数据。

以上是关于Sails.js 表单帖子未提交任何数据的主要内容,如果未能解决你的问题,请参考以下文章

提交表单后模态弹出窗口未正确关闭

一个表单发布后敲除绑定会引发错误并且该帖子是从另一个表单启动的?

表单未使用 Laravel 集合提交

Django表单未提交

表单未在 Django 中发布

html 博客:提交表单时未传递任何表单参数