Дело в том, что:
1) textlines
нигде не определено, как var textlines;
2) textlines
будут возвращены, когда статус OK
, но когда вы сообщаете значение, кажется, что линии выполняется до того, как запрос xml завершит захват содержимого и возвращает его. Следовательно, вы должны предупредить это значение при проверке (==4)
или выполнить функцию и передать textlines
, чтобы она была доступна, только если она установлена и готова к отображению. Код выглядит следующим образом [ПРОВЕРЕНО]
<script>
var textlines;
function processFile(fileContent) {
var lines= fileContent.split('\n');
return lines;
}
function printValue(textlines){
alert(textlines);
}
function loadFile(uri) {
var r = new XMLHttpRequest();
r.open('GET', uri, true);
r.onreadystatechange = function() {
if (r.readyState == 4) {
textlines = processFile(r.responseText);
printValue(textlines);
return textlines;
}
}
r.send(null);
return textlines;
}
var lines=loadFile('ss.txt');
</script>
UPDATE:
Если вы хотите использовать переменную textlines
без функции и прохождения, вы должны подождать некоторое время, пока запрос XML является полным, чтобы захватить содержимое, так что вы можете сделать:
<script>
var textlines;
function processFile(fileContent) {
var lines= fileContent.split('\n');
return lines;
}
function loadFile(uri) {
var r = new XMLHttpRequest();
r.open('GET', uri, true);
r.onreadystatechange = function() {
if (r.readyState == 4) {
textlines = processFile(r.responseText);
return textlines;
}
}
r.send(null);
return textlines;
}
var line=loadFile('ss.txt');
setTimeout(function(){
alert(textlines);
},100);
</script>
дубликат [Как вернуть AJAX ответ текст?] (HTTP: // stackov erflow.com/questions/1225667/how-to-return-ajax-response-text) – Quentin
Это не ответ, но вы знаете, что у вас есть голова внутри вашего тела, да? В HTML, то есть, я не подразумеваю, что у вас есть голова. –
Попробуйте проверить строку 'if (r.readyState == 4) {'. Проверьте, действительно ли он находится в состоянии 4. – Dropout