javascript 使用 AJAX 时如何在oncomplete中调用函数

k3bvogb1  于 2023-04-28  发布在  Java
关注(0)|答案(1)|浏览(139)

第一次写在这里。也是我第一次接触 AJAX ,我有点卡住了。
我有两个变量:

$upload = $application->buildLink('do=upload');
$do = $application->buildLink('do=read-excel');

每一个都调用另一个带有类的文件。第一个将给定的文件上传到uploads文件夹,另一个读取上传的文件(例如xlm)。
然后我有这个脚本,它在选择要上传的文件后启动

uploader_1 = new qq.FileUploader({
                    element: document.getElementById('file-uploader'),
                    action: '$upload',
                    debug: true,
                    multiple: false,
                    allowedExtensions: ['csv','xlsx','xls'],
                    maxConnections: 1,
                    name: 'file-uploader',
                    dragDrop: true,
                    params: {
                        't': new Date().getTime();
                    },
                    template: '<div class="qq-uploader">'
                              + '<div class="qq-upload-drop-area">'
                              + '<span>Drag your file</span></div>'
                              + '<div class="qq-upload-button btn btn-default btn-sm">Select file</div>'
                              + '<ul class="qq-upload-list"></ul>'
                              + '</div>',

                    onSubmit: function(id, filename) {
                    },
                    onProgress: function(id, filename, loaded, total) {

                    },
                    onComplete: function(id, filename, responseJSON) {
                        $('.qq-upload-success').remove();
                        $('.qq-upload-fail').remove();
                        if (responseJSON['success'])
                        {
                            $('#file-uploader').html('Uploaded: ' + filename );
                        }
                        else
                        {
                            showError();
                        }
                    }

在“action:“里面我放了upload,这样upload类就被调用了。然后调用$upload。我想用$do做同样的事情,但我想在上传后做,这可能在onComplete内部,但我不知道如何在那里调用它。
谢谢!

qoefvg9y

qoefvg9y1#

在JavaScript中使用Promise。

function upload() {
    return new Promise ((resolve, reject) => {
        uploader_1 = new qq.FileUploader({...
            onComplete: function(id, filename, responseJSON) {
                $('.qq-upload-success').remove();
                $('.qq-upload-fail').remove();
                if (responseJSON['success'])
                {
                    $('#file-uploader').html('Uploaded: ' + filename );
                }
                else
                {
                    showError();
                }
                resolve();
           }             

    });
}

然后在调用js函数时添加async/await。

async function yourfunction() {
    await upload('upload');
    //then call your $do function below
    await upload('do');
}

相关问题