Из 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();
}
Поскольку функция запускается асинхронно, вам следует рассмотреть возможность использования обещания или функции обратного вызова для разрешения / возврата url_check, чтобы получить доступ к нему за пределами функции readFile.
Если вы просто хотите войти, значение url_check console.log(url_check)
должно быть помещено в readFile
Поскольку вы объявляете переменную 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>