2016-11-10 3 views
1

Я пытаюсь разобрать строку из базы данных noSQL. С трудом. когда доступ к файлу PHP это дает результат:Разбор строки в json/XML из HttpRequest

[{"timestamp":"2016-11-07T09:48:30.335Z","Id":"d7ee735f16b5"}, 
{"timestamp":"2016-11-07T09:48:29.015Z","Id":"d7ee735f16b5"},  
{"timestamp":"2016-11-07T09:48:27.688Z","Id":"d7ee735f16b5"}, 
{"timestamp":"2016-11-07T09:48:27.085Z","Id":"d7ee735f16b5"}, 
{"timestamp":"2016-11-07T09:48:26.577Z","Id":"d7ee735f16b5"}] 

Тот же результат приведен в сети консоли.

Когда я попытаюсь сгенерировать ответ, он показывает null.

Возможно, кто-нибудь поможет мне получить доступ к значениям отметки времени. Вот текущий код:

var ajax = new XMLHttpRequest(); 
ajax.open("GET", url, true); 
ajax.responseType = 'json'; 
ajax.send(); 
var jsonResponse = JSON.stringify(ajax.response); 
document.getElementById('demo').innerHTML = jsonResponse; 

ответ

0

Скорее всего, ответ еще не вернулся с сервера в этом примере. Также убедитесь, что элемент с идентификатором «demo» действительно существует в вашем html-документе.

слушателей Добавить событие в Аякса объекта:

ajax.onload = loadCompleted; 
ajax.onerror = onLoadError; 

затем создать функцию для обработки результата:

var jsonResponse = JSON.stringify(ajax.response); 
document.getElementById('demo').innerHTML = jsonResponse; 

Полный пример (обновлено в комментариях Божидар в):

var url = 'https://jsonplaceholder.typicode.com/posts/1'; 

function loadCompleted() { 
    console.log(ajax.response) 
    var jsonResponse = JSON.stringify(ajax.response); 
    document.getElementById('demo').innerHTML = jsonResponse; 
} 

function onLoadError() { 
    //handle error logic 
} 

var ajax = new XMLHttpRequest(); 
ajax.onload = loadCompleted; 
ajax.onerror = onLoadError; 
ajax.open("GET", url, true); 
ajax.responseType = 'json'; 
ajax.send(); 

См. https://jsfiddle.net/px3mxa4n/ для рабочего примера.

+0

У вас есть «readyState» вар как часть объекта XMLHttpRequest, так что нет необходимости в EventListener ... –

+0

Это работало отлично. спасибо –

+1

Спасибо @BozidarSikanjic. Я обновил код для использования onload и onerror. Эти более явные и выраженные намерения немного лучше. – axlj

0

Не должны ли вы ждать ответа, прежде чем продолжить свой код? Что-то вроде:

ajax.onreadystatechange = function() { 
    if(ajax.readyState == 4 && ajax.status == 200) { 
     // do what you need like 
     var jsonResponse = JSON.stringify(ajax.response); // maybe JSON.parse and then iterate trough array of objects to create individual HTML elements? 
     // ....... 
    } 
} 
Смежные вопросы