从HttpRequest解析字符串到json/XML
问题描述:
我想从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;
答
最有可能的响应并没有从服务器在这个例子返回呢。同时验证一个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/作为一个工作示例。
答
在继续执行代码之前,您不应该等待响应吗?喜欢的东西:
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?
// .......
}
}
你有“readyState的” VAR为XMLHttpRequest对象的一部分,因此没有必要对事件监听... –
这就是完美。谢谢 –
谢谢@BozidarSikanjic。我更新了代码以使用onload和onerror。这些更明确,表达意图好一点。 – axlj