Javascript 如何在不使用FormData的情况下在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

如何在ajax调用中添加一个文件数据和一些普通数据,例如没有表单? 我在ajax脚本中的当前版本

$("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。请查看此选项