2016-08-23 3 views
3

Как я могу добавить данные файла вместе с некоторыми нормальными данными без формы в ajax-вызове? тока я в моем AJAX скриптКак добавить данные файла в ajax-вызов без использования FormData?

$("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() любой альтернативы?

+2

Что случилось с использованием 'FormData()'? Это принятый метод загрузки файлов. Выполнение чего-то другого - это использование более старых технологий. –

+0

Вы правы, я хочу знать, не возможно ли просто добавлять поля файлов так же, как мы добавляем нормальное поле ввода в данные? потому что я просто не могу найти его где угодно, как и в моем первом файле кода: {upload_logo: file}, не возможно? –

+1

Да, для того, чтобы данные внутри файла были переданы как часть запроса POST, нам нужно использовать FormData. Вы также можете смешивать свои данные с содержимым файла. data: {name: 'my name', fileContent: fdata} –

ответ

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

    } 
}); 
+0

У меня нет какой-либо формы, у меня есть поля ввода, и мой вопрос в том, как я может сделать это без использования FormData()? –

+0

Но у вас есть обработчик кликов, почему вы не делаете запрос на этот конкретный клик? – khaliq

+0

Это не имеет ничего общего с формой html на вашей веб-странице. Его просто еще один объект в javascript, чтобы получить содержимое файла из типа ввода = «файл». –

0

Загрузка файла невозможна через ajax. Вы можете загрузить файл, не обновляя страницу с помощью IFrame. вы можете проверить более подробно here

С XHR2 поддерживается загрузка файлов через AJAX. Например. через FormData объект, но, к сожалению, он не поддерживается всеми/старыми браузерами.

Поддержка FormData начинается со следующих версий браузеров для настольных компьютеров. IE 10+, Firefox 4.0+, Chrome 7+, Safari 5+, Opera 12+

Более подробно, see MDN link

Смежные вопросы