2015-02-25 2 views
1
function loadTextDoc(url, cfunc) { 
    xmlhttp = new XMLHttpRequest(); 
    xmlhttp.onreadystatechange = cfunc; 
    xmlhttp.open("GET", url, true); 
    xmlhttp.send(); 
} 

function myFunction() { 
    var values = []; 
    var i; 
    loadTextDoc("../menu.txt", function() { 
     if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { 
      menus.innerHTML = xmlhttp.responseText; 
      values = xmlhttp.responseText; 
      for(i in values) { 
       alert(values[i]); 
      } 
     } 
    }); 

} 

Привет поэтому у меня есть эти 2 функций для retreieving информации из текстового файла, который содержит некоторые данные, как это: [ «ошибка», «джунгли», «Томь», «ферма», «панда», «лягушка»]. Что нужно сделать, так это поместить каждую информацию о массиве, т.е. ошибка, jungle и т. д. вводят якорь в html. но вышеприведенные 2 функции рассматривают мой массив как целое, каждая буква или даже [или "показана как элемент массива. Например, arr [0] равно [, arr [1] =", arr [2] = b , arr [3] = u и так далее. Может кто-нибудь объяснить, что я делаю неправильно.массива нагрузки от TXT нагрузки в HTML данные

Большого спасибо

+2

Сначала вам нужно проанализировать responseText, который является строкой и после разбора, результатом будет объект JSON. Так что, например, 'values ​​= JSON.parse (xmlhttp.responseText)' –

+0

Extrordinary :) –

+0

Есть ли способ чтобы вернуть эти значения, чтобы я мог использовать их в другой функции? –

ответ

1

Ваши данные строки, так что вам нужно разобрать его, прежде чем использовать его, как вы хотите:

arr = JSON.parse(arr); 

Теперь вы можете использовать «обры», как вы хотите :)

EDIT: Вы можете использовать эти данные в другой функции, используя глобальные переменные или параметры.

Примеры:

var values = []; 
function myFunction() { 
    var i; 
    loadTextDoc("../menu.txt", function() { 
     if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { 
      menus.innerHTML = xmlhttp.responseText; 
      values = JSON.parse(xmlhttp.responseText); 
      for(i in values) { 
       alert(values[i]); 
      } 
     } 
    }); 
} 

function another() { 
    // Now you can access "values" from here 
} 

Или:

function myFunction() { 
    var values = []; 
    var i; 
    loadTextDoc("../menu.txt", function() { 
     if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { 
      menus.innerHTML = xmlhttp.responseText; 
      values = JSON.parse(xmlhttp.responseText); 
      for(i in values) { 
       alert(values[i]); 
      } 
      another(values); 
     } 
    }); 
} 

function another(data) { 
    // Now you can access "values" from here 
    // using "data" parameter 
} 

Но в последнем примере "значения" будут desapear после выполнения MYFUNCTION.

+0

Последний пример - это то, что мне нужно. Мне не нужны глобальные значения в моем коде. Так должно работать нормально. Большое спасибо –

+0

Но в первом примере, если я использую valuse как global, будут ли значения назначены значениями из моего текстового файла? –

+1

Только если вы не переопределяете «значения» внутри функции «myFunction». "var values ​​= [];" определяется за пределами один раз и не переопределяется снова внутри него. – OscarGarcia

Смежные вопросы