Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用Superagent通过ajax提交包含图像值的表单_Javascript_Ajax_Pyramid_Superagent - Fatal编程技术网

Javascript 使用Superagent通过ajax提交包含图像值的表单

Javascript 使用Superagent通过ajax提交包含图像值的表单,javascript,ajax,pyramid,superagent,Javascript,Ajax,Pyramid,Superagent,我尝试了几种不同的方法,但似乎没有任何东西能够正确提交我的图标文件 request .post('/my/newapp') .type('multipart/form-data') .field('name', input.newAppName) .field('description', input.newAppDescription) .field('csrf', csrf.newApp) .attach('icon', this.refs.icon.value) /

我尝试了几种不同的方法,但似乎没有任何东西能够正确提交我的图标文件

request
  .post('/my/newapp')
  .type('multipart/form-data')
  .field('name', input.newAppName)
  .field('description', input.newAppDescription)
  .field('csrf', csrf.newApp)
  .attach('icon', this.refs.icon.value) // Doesn't save for some reason
  .end((err, res) => {...
对于上面的提交,我的请求负载如下所示:

------WebKitFormBoundarywygaaRkqk2Kr6zzJ
Content-Disposition: form-data; name="name"

afasfasfasf
------WebKitFormBoundarywygaaRkqk2Kr6zzJ
Content-Disposition: form-data; name="description"


------WebKitFormBoundarywygaaRkqk2Kr6zzJ
Content-Disposition: form-data; name="csrf"

16we7ncdfoyz5twnc1ilhg5pjgr6ze5s36153ffbf:aYCZkOQV6nxQq6mXWmCLOQ==
------WebKitFormBoundarywygaaRkqk2Kr6zzJ
Content-Disposition: form-data; name="icon"


------WebKitFormBoundarywygaaRkqk2Kr6zzJ--
但我的金字塔应用程序上有一个502:
ValueError:多部分形式的无效边界:“”

我也尝试过使用
FormData
,但没有效果

let formData = new FormData();
formData.append('name', input.newAppName);
formData.append('description', input.newAppDescription);
formData.append('csrf', csrf.newApp);
formData.append('icon', this.refs.icon.value);
request
  .post('/my/newapp')
  .type('form')
  .set('Content-Type', 'application/x-www-form-urlencoded')
  .send(formData)
  .end((err, res) => {...

任何洞察都是值得赞赏的。如果我做一个普通的非ajax表单post,它就可以正常工作

找到了答案。在将图标添加到formData时,我使用了错误的属性

  handleSubmit(e) {
    e.preventDefault();
    let {input, csrf, setErrorModal} = this.props;
    let formData = new FormData();
    formData.append('name', input.newAppName);
    formData.append('description', input.newAppDescription);
    formData.append('csrf', csrf.newApp);
    formData.append('icon', this.refs.icon.files[0]);
    request
      .post('/my/newapp')
      .send(formData) // works now =-]
      .end((err, res) => {...

这是否解决了您的问题:?@limelights感谢您的帖子。然而,这也不起作用。在后端,我得到了旧表单submit的
FieldStorage('icon',u'myImage.jpg')
。和
C:\fakepath\myImage.jpg
用于在使用FormData时使用新的ajax表单。有什么想法吗?你能分享一下你的rails控制器的动作吗?我正是这样做的,但我在rails端得到了
ActionController::BadRequest(无效的请求参数:Invalid%-编码)
。@我使用的是Python的金字塔框架。我不熟悉rails中的情况,但如果您在rails中搜索AJAX图像上载,您应该能找到一些东西。