无需使用submit按钮提交input type="file"文件及其他表单参数的问题
问题原因
直接通过$("#arquivo").val()只能获取到文件的本地虚拟路径,无法获取真实二进制文件内容,同时jQuery AJAX默认的参数序列化规则不支持传输文件类型数据,所以后端接收到的文件参数为空。
解决方法
使用FormData对象封装表单数据,同时调整AJAX配置参数,修改后的JS代码如下:
function update_estado() { // 直接基于现有表单创建FormData对象,会自动包含所有表单字段(包括文件) var dadosajax = new FormData($('#forarq')[0]); // 如需额外传参可以手动追加:dadosajax.append('自定义字段','对应值') $.ajax({ url: 'pedencom.php', type: 'POST', cache: false, data: dadosajax, // 禁止jQuery自动处理FormData数据,必须保留 processData: false, // 禁止jQuery手动设置请求头Content-Type,让浏览器自动生成带分隔符的multipart/form-data类型 contentType: false, error: function(){ $(".error_message").removeClass('hide'); swal("Erro!", "Tente novamente. Caso persista o erro, contatar Administrador!", "error"); }, success: function(result2) { $('.limp9')[0].reset(); } }); }
后端取值说明
PHP后端获取参数的方式和普通表单提交一致:
- 邮箱参数:
$_POST['Fornecedor'] - 上传文件信息:
$_FILES['arquivo'],后续可以用move_uploaded_file()等方法完成文件持久化保存。
另外你当前按钮设置的是type="button",本身就不会触发表单默认submit行为,不需要额外调整。
内容的提问来源于stack exchange,提问作者Bruno
相关产品推荐
相关产品推荐

