我正在使用一个很棒的插件 - dropzone.js (dropzonejs.com) 来让我的网站在注册新用户时更加漂亮。
基本上,用户填写一个表单,将几个图像放入“dropzone”,然后单击“提交”,这会触发一个 ajax 调用,将表单发布到 php 脚本。
我将 dropzone 参数设置为 enqueForUpload:false,这可以防止文件自动上传,因为我需要在创建新用户 ID 后将它们上传到 uploads/$userid 中。我可以提供 dropzone 标头参数,我假设将其发布到 url,类似于 ajax 调用,而不是数据:{'userid': userid},dropzone 使用标头:{'userid': userid}...但是,dropzone 在 document.ready 上初始化,并且由于 userid 变量尚未声明,dropzone 无法初始化。
我猜我需要用 document.ready 初始化 dropzone,但还没有给它标题。然后,在 ajax 表单处理成功并返回 userid 后,调用 dropzone 进行上传并为其提供此时的标头。问题是,我不知道需要调用什么代码才能实现这一点。
准备就绪时初始化 Dropzone:
$(document).ready(function(){
$('#dropzone').dropzone({
url: 'dropzoneprocess.php',
maxFilesize: 1,
paramName: 'photos',
addRemoveLinks: true,
enqueueForUpload: false,
});
});
Then...
$('#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' */
});
});