【发布时间】:2021-07-15 21:28:05
【问题描述】:
我有一种情况,我尝试以各种方式解决,但对我没有用。
我需要的是,在开始上传视频时,我可以在数据库中创建一个 ID 并将其返回到 Dropzone sending event 以将其与其他表单字段一起发送。我需要 ID,因为在上传视频时,我必须显示保存在数据库中的内容的预览,并且用户可以修改视频的名称。
要在数据库中创建 ID,我有这个 Ajax 函数:
function create() {
var result;
$.ajax({
type: 'post',
url: urlroot + 'Videos/id',
data: {},
success: function (response) {
myCallback(response);
}
});
return result;
}
function myCallback(response) {
return response;
}
这是 Dropzone 的发送事件:
this.on("sending", function (file, xhr, formData) {
var idv = create();
formData.append("id", idv);
formData.append("artistas", jQuery("#artistas").val());
formData.append("artistas", jQuery("#artistas").val());
});
问题是在发送事件执行之前$ajax响应没有到达,所以我的“idv”进入PHP脚本为“未定义”。我知道这是因为异步调用。我试图以某种方式延迟发送的执行(使用 promises 或 setTimeOut),但它不起作用。
我也试过直接在上传PHP脚本中创建,DB中的ID并用“return”或“echo”返回,但只能在“success”事件中收到答案,我需要你以便能够在上传到服务器时修改视频的名称。
我还尝试在“发送”事件中访问文件或 XHR 对象的数据,并使用 console.log 它向我显示 .responseText,但是当我想直接访问时它告诉我它是空的:
console.log(file.xhr.responseText);
console.log(xhr.responseText);
我不知道还能尝试什么,我需要该 ID 来在文件上传时修改数据库中的数据,因为视频的名称可以重复。也许我应该改变我的注意力,如果有人启发我,将不胜感激。
我很关注你们的cmets,对我的英语很抱歉。
【问题讨论】:
标签: php dropzone.js