2016-08-04 2 views
0

Я пытаюсь добавить результаты файла, полученного с помощью XMLHttpRequest, в массив. Файл - json.Как исправить TypeError: undefined не является объектной ошибкой?

Вот код, который создает ошибку:

var array = []; 
var req = new XMLHttpRequest(); 
req("get", "test.json"); 
req.onreadystatechange = handle(req, array); 
req.send(); 

function handle(req, array) { 
    if ((req.target.readyState == 4) && (req.target.status == 200)) { 
     var json = JSON.parse(req.target.responseText); 
     array.push(json.test); 
     alert(array); 

    } 
} 

Без использования target является имеет значение 4

+2

На какой линии имеет место ошибки? –

+0

Скорее используйте console.log (массив) для проверки результатов данных. И согласился @JulianKuchlbauer, где ошибка возникает в какой строке? – ThatAwesomeCoder

+0

И вам нужно написать req.open («get», «test.json»); а не просто req (... –

ответ

0

Вы использовали неправильное свойство запроса.

Попробуйте встраиваемую функцию для обратного вызова onreadystatechange

var array = []; 
var req = new XMLHttpRequest(); 
req("get", "test.json"); 
req.onreadystatechange = function(){ 
    if ((req.readyState == 4) && (req.status == 200)) { 
     var json = JSON.parse(req.responseText); 
     array.push(json.test); 
     alert(array); 
    } 
}; 
req.send(); 

или как на пути

var array = []; 
    var req = new XMLHttpRequest(); 
    req("get", "test.json"); 
    req.onreadystatechange = handle(); 
    req.send(); 
function handle(){ 
     if ((req.readyState == 4) && (req.status == 200)) { 
      var json = JSON.parse(req.responseText); 
      array.push(json.test); 
      alert(array); 
     } 
    }; 
+0

Проблема заключается в том, что 'array' и' req' находятся внутри функции, а 'handle' - отдельная функция , – 1072

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