В настоящее время я пытаюсь загрузить файл через форму, которую я создал, используя jQuery. Это то, что я пытаюсь сделать:
function ajax_upload(){
var formData = new FormData($('form#userform'));
$.ajax({
url: location.protocol + "//" + location.host + "/profile/uploadPicture",
dataType: 'json',
data: formData,
type: 'post',
success: function(data, status){
if (data.status == 'error') {
$('#error').html(data.msg);
}
else {
var filename = location.protocol + "//" + location.host + "/data/profiles/" + data.msg;
$('input#filename').val(filename);
close_upload_form();
pop_profilechanger(filename);
}
}
});
return false;
}
форма появляется для публикации на бэкэнд, но при попытке вернуть имя файла из загруженного файла в объект JSON, например: echo json_encode (array ('status' => $ status, 'msg' => $ msg));
Здесь что-то не так? пожалуйста, скажите мне
Вот как я это делаю. Если вам нужна дополнительная информация, а не только мой вставленный код, ознакомьтесь с этим http://www.html5rocks.com/en/tutorials/file/dndfiles/, потому что мой код был создан для перетаскивания файлов
handleFiles : function(files, evt, target)
{
console.log(target);
$.each(files, function(index, value)
{
var file = value;
reader = new FileReader();
reader.onload = function(evt)
{
var li = $("<li class='uploading'><img data-image-id='0' src='" + evt.target.result + "' /></li>");
target.find('.imagesList').append(li);
var request = new XMLHttpRequest();
var formData = new FormData();
formData.append('image', file);
request.open("Post", settings.uploadImageUrl);
request.addEventListener("load", function(evt)
{
var id = evt.target.responseText;
li.removeClass('uploading');
li.find('img').attr('data-image-id', id);
}, false);
request.send(formData);
};
reader.readAsDataURL(value);
});
},
var formData = new FormData($('form#userform'));
должно бытьvar formData = $('form#userform').serialize()
- это гарантирует, что данные будут отправлены на сервер в виде строки вродеname=george&[email protected]&validated=1
Ohgodwhy