我想在显示文件对话框或显示其他内容之前检查身份验证(在我的情况下为带有“请登录”的表单形式的模式)。
当用户删除文件时,没有问题,因为我们不想看到文件对话框。但是,当用户单击#addphoto
div时,它将无法正常工作。
代码如下:
myDropzone = new Dropzone(document.body, myDropzoneOptions).on('addedfile', function(file) {
checkAuth(false);
}).on('sending', function(file, xhr, formData ) {
formData.append("_token", $('meta[name="csrf-token"]').attr('content'));
});
function checkAuth(showFileDialog) {
$.ajax({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
url: '/checkauth',
method: 'GET',
}).done(function(data) {
if (showFileDialog) {
myDropzone.hiddenFileInput.click();
}
}).fail(function(data) {
$(document).trigger("verifyAuth", [ data ]);
});
}
$(document).on('click', '#addphoto', function(e) {
checkAuth(true);
});
知道ajax失败时,它可以工作并触发绑定到文档的verifyAuth
事件(然后显示一些模式信息)。成功后(以.done()
承诺),它可以访问变量myDropzone,但不能成功触发click事件,因此文件对话框永远不会出现。