如何嵌套ajax调用?

时间:2016-02-05 13:09:45

标签: javascript ajax

这是我的代码。

目前这里每次内部ajax方法都会在外部方法标记完成时调用。

var folderpath = encodeURIComponent('Recording' + new Date().getTime());
    var ajaxWorking = true;
    function uploadAudio(mp3Data) {
        var reader = new FileReader();
        reader.onload = function (event) {
            var fd = new FormData();
            var mp3Name = encodeURIComponent('audio_recording_' + new Date().getTime() + '.mp3');
            console.log("mp3name = " + mp3Name);
            fd.append('fname', mp3Name);
            fd.append('data', event.target.result);
            //Costin testing
            fd.append('studentId', '1');
            fd.append('folderpath', folderpath);
            fd.append('recording', stopRecording)

            $.ajax({
                type: 'POST',
                url: '/api/ClientApi/PostRecordedStream',
                data: fd,
                processData: false,
                contentType: false,
                success: function (data) {
                    console.log(data + " : AjaxDone");
                    ajaxWorking = false;
                }
            }).done(function (data) {
                console.log(data);
                //setTimeout(this, 5000);
                console.log(stopRecording + " : " + ajaxWorking);
                if (stopRecording == true && ajaxWorking == false) {
                    console.log(stopRecording + " : " + ajaxWorking + "LoadMP3");

                    $.ajax({
                        type: 'GET',
                        url: '/api/ClientApi/GetAudio',
                        data: { folderpath: folderpath },
                        success: function (data) {
                            console.log(data);
                        }
                    }).done(function (data) {
                        var url = 'data:audio/mp3;base64,' + data;
                        var li = document.createElement('li');
                        var au = document.createElement('audio');
                        var hf = document.createElement('a');
                        au.controls = true;
                        au.src = url;
                        hf.href = url;
                        hf.download = 'audio_recording_' + new Date().getTime() + '.mp3';
                        hf.innerHTML = hf.download;
                        li.appendChild(au);
                        li.appendChild(hf);
                        recordingslist.appendChild(li);
                    });
              }


            });
        };
        reader.readAsDataURL(mp3Data);
    }

外部ajax将从UI调用多次。但我想只在所有外部ajax调用完成时调用。

0 个答案:

没有答案