Я использую отличный плагин - dropzone.js(dropzonejs.com), чтобы сделать мой сайт немного более причудливым при регистрации нового пользователя.
В принципе пользователь заполняет форму, отбрасывает пару изображений в "dropzone" и нажимает "Отправить", что вызывает вызов ajax, который отправляет форму на php script.
У меня есть параметры dropzone, установленные в enqueForUpload: false, что сохраняет файлы от автоматической загрузки, так как мне нужно, чтобы они загружались в uploads/$userid после создания нового идентификатора пользователя. Я могу предоставить параметры заголовка dropzone, который я беру на URL-адрес, похожий на вызов ajax, вместо данных: {'userid': userid}, dropzone использует заголовки: {'userid': userid}... Однако, dropzone инициализируется на document.ready, и поскольку переменная userid еще не объявлена, dropzone не может инициализироваться.
Я предполагаю, что мне нужно будет инициализировать dropzone с помощью document.ready, но пока не указывать заголовки. Затем после того, как обработка формы ajax будет успешной и вернет идентификатор пользователя, вызовите dropzone для загрузки и передайте ему заголовки в этот момент. Проблема в том, что я не знаю, какой код нужно вызвать, чтобы это произошло.
Инициализировать Dropzone при готовности:
$(document).ready(function(){
$('#dropzone').dropzone({
url: 'dropzoneprocess.php',
maxFilesize: 1,
paramName: 'photos',
addRemoveLinks: true,
enqueueForUpload: false,
});
});
Тогда...
$('#submit').on('click', function(){
validation crap here
$.ajax({
type: 'post',
url: 'postform.php',
data: {'various': form, 'values': here}
datatype: 'json',
success: function(data){
var userid = data.userid;
/* (and this is what I can't figure out:)
tell dropzone to upload, and make it
post userid to 'dropzone.php' */
});
});