Как вывести значение из FileReader ()

Из PHP 5.4

function array2xml($data, $root = null){
    $xml = new SimpleXMLElement($root ? '<' . $root . '/>' : '<root/>');
    array_walk_recursive($data, function($value, $key)use($xml){
        $xml->addChild($key, $value);
    });
    return $xml->asXML();
}
1
задан executable 18 January 2019 в 08:32
поделиться

2 ответа

Поскольку функция запускается асинхронно, вам следует рассмотреть возможность использования обещания или функции обратного вызова для разрешения / возврата url_check, чтобы получить доступ к нему за пределами функции readFile.

Если вы просто хотите войти, значение url_check console.log(url_check) должно быть помещено в readFile

0
ответ дан Kossi D. T. S. 18 January 2019 в 08:32
поделиться

Поскольку вы объявляете переменную url_check внутри $(document).ready(function() ..., это означает, что она будет доступна только там. Решением было бы объявить параметр глобально, чтобы любые изменения в функции все еще были видны. Если вы хотите что-то сделать с переменной после того, как она назначена, вам нужно немедленно вызвать функцию там. Вызов до этого может привести к нулевым результатам, так как файл еще не был обработан. Смотрите jsfiddle ниже. Я проверил, что он делает то, что вы хотите.

$(document).ready(function() {
  $('#file_input').on('change', function(e) {
    readFile(this.files[0], function(e) {
      var txt = e.target.result
      var lines = txt.split("\n");
      
      if (lines && lines.length > 0)
        url_check = lines[0];
      
      $('#output_field').text(url_check);
      console.log(url_check);
      callbackPrint();
    });
  });
});

var url_check = null;

function readFile(file, onLoadCallback) {
  var reader = new FileReader();
  reader.onload = onLoadCallback;
  reader.readAsText(file);
}

function callbackPrint() {
  console.log("From testPrint: " + url_check);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input id="file_input" type="file">
<div id="output_field"></div>

0
ответ дан Adrian Pop 18 January 2019 в 08:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: