Javascript 如何在不使用FormData的情况下在ajax调用中添加文件数据?
如何在ajax调用中添加一个文件数据和一些普通数据,例如没有表单? 我在ajax脚本中的当前版本Javascript 如何在不使用FormData的情况下在ajax调用中添加文件数据?,javascript,php,jquery,ajax,post,Javascript,Php,Jquery,Ajax,Post,如何在ajax调用中添加一个文件数据和一些普通数据,例如没有表单? 我在ajax脚本中的当前版本 $("body").on("click", "#next-step", function(event){ $("#loader").show(); event.preventDefault(); var file = $("#upload_logo")[0].files[0
$("body").on("click", "#next-step", function(event){
$("#loader").show();
event.preventDefault();
var file = $("#upload_logo")[0].files[0];
$.ajax({
type: 'POST',
url: 'step-two.php',
data:{
name : "my name",
},
file : {upload_logo : file},
contentType: false,
processData: false,
success: function(response)
{
$("#loader").hide();
alert(response);
}
})
});
我找到了解决办法,但这不是我想要的工作方式
event.preventDefault();
var fdata = new FormData()
if($("#upload_logo")[0].files.length>0)
fdata.append("upload_logo",$("#upload_logo")[0].files[0])
$.ajax({
type: 'POST',
url: 'step-two.php',
data:{fdata},
这是可行的,但我的问题是,如果我只想在数据中添加我的文件怎么办?除了使用FormData()之外,还有其他选择吗?无法通过ajax上传文件。您可以使用IFrame上传文件,而无需刷新页面。您可以查看更多详细信息
Use Form data
var formData = new FormData('form id');
$.ajax({
type: 'post',
async: false,
cache: false,
url: '',
contentType: false,
processData: false,
data: formData,
dataType: 'json',
success: function (response) {
}
});
XHR2支持通过AJAX上传文件。例如通过
对象,但遗憾的是,all/old不支持它
浏览器
FormData支持从以下桌面浏览器版本开始。即
10+、Firefox 4.0+、Chrome 7+、Safari 5+、Opera 12+
有关更多详细信息,使用
formData()
有什么问题?这是公认的文件上传方法。你是对的,我想知道的是,仅仅添加文件字段,就像我们在数据中添加普通输入字段一样,难道不可能吗?因为我在任何地方都找不到它,就像我在我的第一个代码文件:{upload_logo:file}中所做的那样,难道不可能吗?是的,为了将文件中的数据作为POST请求的一部分传输,我们需要使用FormData。您还可以将数据与文件内容混合。数据:{name:'my name',fileContent:fdata}所以基本上我不能在没有FormData的情况下添加图像()我只是想澄清一下?我没有任何表单,我只有输入字段,我的问题是如何在不使用FormData()的情况下添加图像?但是您有一个点击处理程序,为什么不在特定的点击上发出请求呢?这与您网页中的html表单无关。javascript中的另一个对象就是从input type=“file”中获取文件内容。我正在这样做,而且我能做到。我的简单问题是,在没有FormData()的情况下,如何在ajax调用中添加通过文件上传的图像以添加数据,而剩下的唯一选项是使用iframe。请查看此选项