javascript - 使用 jQuery val() 发送表单数据并使用 FormData 发送数据
问题描述
我尝试使用两种方法使用 Ajax POST 请求发送文件:
方法 1 (jQuery val()) -
$.ajax({
url: 'somewhere',
method: 'post',
processData: true,
contentType: true,
data:{
'data1': $('#fileinputid').val(), // File input
}
success:function(){
// Do something;
}
error:function(){
// Do something;
},
});
方法 2- (FormData)
var formData = new FormData(document.getElementById("form-id"));
$.ajax({
url: 'somewhere',
method:'post',
cache: false,
processData:false,
contentType: false,
data: formData,
success: function(){
// Do something for success
},
error: function(){
// Do something for error
},
});
现在,方法 2 有效,但方法 1 无效。这是什么原因?
解决方案
$('#fileinputid').val()
只为您获取文件名。你不能用那个上传文件。
FormData
能够创建文件上传所需的整个 multipart/formdata 请求结构。
推荐阅读
- c++ - 在 macOS 中使用 linux getopt
- node.js - socket.io/ 用 firefox 表示“跨域请求被阻止”,在 chrome 中表示“ERR_CONNECTION_REFUSED”
- sas - 如何从 sas 中的混合变量列表(num+char)中仅提取字符值
- java - 如何在导航抽屉中维护片段的回栈?
- kubernetes - 公开应用程序时出现 Kubernetes 入口控制器错误
- java - Play Framework 2.8.x MySQL 连接问题
- javascript - 响应式导航栏菜单(汉堡菜单)无法通过单击打开
- push-notification - push token 的 delegte 方法在 iPhone 5s 和 ios 12.4.5 中没有调用
- python - 如何在 Python 中比较 2 个日期并预测输出
- html - Bootstrap 响应式菜单按钮不会响应