2014-10-02 4 views
2

Я пытаюсь загрузить файл AJAX с помощью MinifiedJS и $ .request.

У меня есть и HTML-файл с входным файлом.

<input type="file" id="fileAvatar" /> 

И мой код Javascript выглядит следующим образом.

$('#fileAvatar').on('change', uploadAvatar); 

function uploadAvatar(event) { 
    var fData = new FormData(); 
    // Add files 
    _.each(event.target.files, function(file, key) { 
    fData.append(key, file); 
    }); 
    // Add ohter parameters 
    fData.append('user', 267345); 

    // POST formData 
    $.request(
    'post', 
    '/ajax/upload_avatar.php', 
    fData, 
    {'Content-Type': 'multipart/form-data'} 
).then(function(response){ 
    console.log(response); 
    }); 
} 

Я могу видеть POST для /ajax/upload_avatar.php на инструментах Chrome Dev, но я не получаю никаких параметров на моем PHP, это выглядит как объект формы данных не передается.

Любые мысли?

ответ

0

4-й аргумент запроса() - это не список заголовков, а объект настроек. Если вы хотите указать Content-Type, вам нужно будет использовать настройку заголовков:

$.request(
    'post', 
    '/ajax/upload_avatar.php', 
    fData, 
    {headers: {'Content-Type': 'multipart/form-data'}} 
) 
+0

По-прежнему та же проблема, я ничего не получаю на стороне сервера. И теперь после внесения этого изменения заголовки в Chrome Dev Tools выглядят как объект 'headers: [object Object]' вместо 'Content-Type: application/x-www-form-urlencoded', как и раньше. –