如何在不使用FormData的情况下在ajax调用中添加文件数据?

时间:2016-08-23 12:55:33

标签: javascript php jquery ajax post

如何在ajax调用中添加文件数据和一些普通数据,即没有形式? 我在我的ajax脚本中的当前情况

{
    "results": [
        {
            "code": 200.0,
            "name": "server.example.com",
            "status": "Attributes updated.",
            "type": "Host"
        }
    ]
}

我找到了解决方案,但这不是我希望它的工作方式

$("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);

                    }
                })


    });

它有效,但我的问题是,如果我只想在数据中添加我的文件,我该怎么做?而不是使用FormData()任何替代?

2 个答案:

答案 0 :(得分:1)

无法通过ajax上传文件。您可以使用IFrame上传文件,而无需刷新页面。您可以查看更多详细信息here

  

使用XHR2,支持通过AJAX上传文件。例如。通过   FormData对象,但不幸的是,所有/旧的都不支持   浏览器。

     

FormData支持从以下桌面浏览器版本开始。 IE   10 +,Firefox 4.0 +,Chrome 7 +,Safari 5 +,Opera 12 +

有关详细信息,请see MDN link

答案 1 :(得分:-2)

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) {

   }
 });