2014-07-17 4 views
0

У меня есть следующий АЯКС функция:как получить данные в успехе Аякса

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. Второй вопрос: данные являются аудиофайлами. Есть ли специальный способ получения аудиоданных, или мы можем получить его так же, как и любые данные? На моей стороне php-сервера второго ajax, m чтение аудиофайла и хотите использовать его data.I сделал простой файл открыть и получить contents.does, которые работают на аудио файлы?

код на стороне сервера:

<?php 
$fileName=$_POST["fileName"]; 

$dh = opendir('upload/'); 
$contents = file_get_contents('C:/wamp/www/JSSoundRecorder/upload/'.$fileName); 
// echo $contents; 
echo $fileName; 
+0

Первый вопрос, на который нужно ответить, достаточно для меня, если кто-то может помочь, пожалуйста, – lama

+0

Во-первых, почему вы вызываете другой сценарий ответа? Почему бы не сделать все это в 'upload.php', чтобы уменьшить 1 запрос? Еще один, я не вижу, откуда приходит переменная 'fileName', есть ли у вас какая-либо ошибка? Каков вывод из консоли? –

+0

no im не имеет никакой ошибки, и все в порядке, имя файла указано, но я не копировал весь код. Я просто хочу использовать данные из второго ajax позже в program.as, почему я использую другой скрипт в ответе это связано с программой flow.bare со мной – lama

ответ

0

Это плохая практика в целом, но то, что вы могли бы сделать, это указать глобальную переменную в начале, а затем присвоить данные для этой переменной внутри успеха. Проблема заключается в том, что вы не можете быть уверены, что ajax завершен, и ваша переменная установлена, прежде чем вам нужно будет ее использовать.

var mySuccessVar = null; 

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

... // later in the code: 
if (mySuccessVar != null) { 
    yourFunction(mySuccessVar); 
} 
Смежные вопросы