jquery - 使用 ajax for PHP 上传文件:TypeError
问题描述
我实际上是在尝试使用 jQuery ajax 方法上传图像文件。但我仍然有两个错误。表格很大,有多个输入文件。目标是在用户输入其他字段时上传文件。因此,提交按钮用于操作,该操作基于图像选择。当一个输入文件更改时,AJAX 代码必须工作。
我试图在 stackoverflow 上找到一个解决方案,因为 1h 改变了几种不同的语法,但没有任何效果。
我的代码在这里
<form id="form_animation" method='post' enctype='multipart/form-data' accept-charset='UTF-8' action=''>
<!-- something like 2 fieldsets and 15 input before my input file -->
<input type="file" name="animation_01_file" id="animation_01_file" data-line="1" accept="image/*">
<!-- few others input -->
</form>
jQuery端
$("input[type='file']").on('change', function(){
var form = $(this).get(0);
var fd = new FormData(form);
/*var file = $(this).prop('files')[0];
var fd = new FormData();
console.log(file);
fd.append('file', file);*/
/* var fd = new FormData( $('#form_animation')[0] );
===> return error type 'append'
*/
$.post(
"traitements_ajax.php", {
data: fd,
processData: false,
contentType: false,
cache: false
},
function myResult(text_result){
//some results here
},
"text"
);
您可以在评论中看到另一个尝试。
错误总是:
TypeError:在未实现接口 FormData 的对象上调用了“附加”。
或者
TypeError:FormData.constructor 的参数 1 没有实现接口 HTMLFormElement。
真的很感谢你的时间。
解决方案
您需要在<form>
此处使用您的 id:
var form = $(this).get(0);
在这里,this
意味着您正在尝试获取type="file"
错误的数据。
您需要在此处使用您的表单 ID,如下所示:
var form = $("#yourFormID").get(0);
您的表单示例:
<form id="yourFormID" enctype="multipart/form-data">......
或者,只是简单的使用:
var fd = new FormData($("#yourFormID")[0]);
一些有用的链接:
推荐阅读
- node.js - 函数内部中间件的 Sinon Stub
- javascript - A-Frame - Raycast Three.JS 3D 对象
- ruby - 如何执行 savon client.call 使用带有有效负载的 GET 请求而不是 POST?
- database - 如何从条目/行中的“项目”中检索条目/行的“id”?
- zsh - 在 shell 函数中睡眠 inotifywait 不起作用
- excel - 如何在由类动态创建的组合框上使用 ComboBox_Change() - VBA
- python - 从熊猫数据框创建表
- android - 项目 API 19 之间的 Recyclerview 差距
- flutter - 在文本字段顶部的 fireOS firetv/firestick 上颤振文本字段
- protractor - 使用前摄器运行 e2e 测试用例并且未创建会话