Я уже более 2 часов пытаюсь решить проблему с передачей только 1 аргумента при запросе. Метод: POST, я создаю пост функцией, загружая файлы к нему. Для передачи параметров (вроде описания) использую get, так как data должна принять только файлы. Вот код:
window.addPost = 0, window.fdPost = new FormData;
$(document).ready(function() {
$("#files").change(function() {
window.fdPost = new FormData;//для удаления предыдущих изменений файлов
//save files
$.each(this.files, function(d, g) {
window.fdPost.append(d, g)
})
});
});
function createPost() {
if (window.addPost == 0) {
name = $('#name').val(), desc = $('#desc').val(), cat = $('#cat :selected').val();
if (name.length && desc.length && cat.length) {
$.ajax({
url: "/posts/add/addPost?name=" + name + "&content=" + desc +"&cat=" + cat + "",
method: 'POST',
data: window.fdPost,
cache: !1,
dataType: 'text',
processData: !1,
contentType: !1,
timeout: 60000,
xhr: function() {
var s = $.ajaxSettings.xhr();
mdtoast('Загрузка материалов: 0%', {duration: 60000, type: 'info'})
return s.upload.addEventListener('progress', function(g) {
if (g.lengthComputable) {
var h = Math.ceil(100 * (g.loaded / g.total));
$('.mdt-message').text('Загрузка материалов: ' + h + '%');
if(h == 100) mdtoast('Материалы загружены, сохранение их на сервере', {duration: 40000,type: 'info'})
}
}, !1), s
},
success: function(s) {
s = $.parseJSON(s);
if ('success' == s.status) {
1 == s.upload ? (mdtoast('Пост создан и материалы прикреплены, ожидайте модерацию. Всего загружено ' + s.info.count + ' файлов, общий размер составляет ' + s.info.size, {interaction: true, type: 'info', actionText: 'OK', action: function() {
location.href = '/';
this.hide();
}})) : (mdtoast('Пост создан, ожидайте модерацию', {interaction: true, type: 'info', actionText: 'OK', action: function() {
location.href = '/';
this.hide();
}}))
} else {
window.addPost = 0;
mdtoast(s.message, {interaction: true, type: 'info', actionText: 'OK'})
}
},
error: function(s) {
window.addPost = 0;
mdtoast(lang.network_error_header + lang.network_error_text, {duration: 20000, type: 'error'})
}
});
} else window.addPost = 0, mdtoast(lang.input_empty_header + lang.input_empty_text, {interaction: true, type: 'info', actionText: 'OK'})
} else alert('В процессе публикации поста, новый пока опубликовать нельзя, ожидайте публикацию текущего...')
}
Проблем при выборе файлов нет, то есть если я выбрал файлы, то все параметры (и сами файлы, и имя поста, описание и категория) передаются, НО если я не выбрал файл(ы), то передаётся в get только name (имя поста). бред какой-то, решите