如何在ajax的成功中获取数据

时间:2014-07-17 06:37:13

标签: javascript ajax

我有以下ajax功能:

reader.onload = function(event){
    var fd = new FormData();
    var Name = encodeURIComponent('audio_recording_' + new Date().getMinutes() + '.wav');
    console.log("name = " + Name);
    fd.append('fname', Name);
    fd.append('data', event.target.result);
    $.ajax({
        type: 'POST',
        url: 'upload.php',
        data: fd,
        processData: false,
        contentType: false,
        success: function(data){
            //console.log(data);
             $.ajax({
                    type: 'POST',
                    url: 'readFile.php',
                    data: {"fileName":fileName},
                    success: function(data){
                        console.log(data);
                    }
                });
        }
    });
};      
  1. 第一个问题:我想从第二个成功函数中检索数据,以便稍后在代码中使用它。这可能会发生吗?

  2. 第二个问题:数据是一个音频文件。是否有一种获取音频数据的特殊方式,或者我们可以像任何数据一样获得它?在我的第二个ajax的php服务器端,我我正在读一个音频文件,想要使用它的数据。我做了简单的文件打开并获取了适用于音频文件的内容。

  3. 服务器端代码:

    <?php
    $fileName=$_POST["fileName"];
    
    $dh = opendir('upload/');
    $contents = file_get_contents('C:/wamp/www/JSSoundRecorder/upload/'.$fileName);
    // echo $contents;
    echo $fileName;
    

1 个答案:

答案 0 :(得分:0)

这通常是一种不好的做法,但您可以做的是在开始时指定一个全局变量,然后在成功中为该变量分配数据。这个问题是,在您需要使用之前,您无法确定ajax是否已完成并且您的变量已设置。

var mySuccessVar = null;

...
success: function(data) {
    mySuccessVar = data;
}

... // later in the code:
if (mySuccessVar != null) {
    yourFunction(mySuccessVar);
}