2016-11-10 134 views
1

我想从noSQL数据库解析一个字符串。有困难。 当您访问的PHP文件它给了这样的结果:从HttpRequest解析字符串到json/XML

[{"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"}] 

同样的结果在控制台的网络中给出。

当我然后尝试将响应字符串化时,它显示为空。

请任何人都可以帮助我访问时间戳值。下面是当前的代码:

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

最有可能的响应并没有从服务器在这个例子返回呢。同时验证一个id为'demo'的元素确实存在于你的html文档中。

添加事件侦听器的AJAX对象:

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的” VAR为XMLHttpRequest对象的一部分,因此没有必要对事件监听... –

+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? 
     // ....... 
    } 
}