我对js比较新。我希望能够使用纯JavaScript从外部URL解析json。目前我正在使用
Content = open("file.xml").read()
From xml.etree import XML
Etree = XML(Content)
Print Etree.text, Etree.value, Etree.getchildren()
然而,这不起作用。任何人都可以帮我这个吗?谢谢!
答案 0 :(得分:2)
首先,你忘了将callback函数传递给getJSON作为第二个参数,它应该被调用 当你的xhr返回数据时。 其次,当您从服务器请求JSON文件并将responseType设置为JSON时,您不需要将数据解析为json,这将自动为您完成。
var getJSON = function(url, callback) {
var xhr = new XMLHttpRequest();
xhr.open('GET', url, true);
xhr.responseType = 'json';
xhr.onload = function() {
var status = xhr.status;
if (status === 200) {
callback(null, xhr.response);
} else {
callback(status, xhr.response);
}
};
xhr.send();
};
function yourCallBackFunction(err, data){
if(err){
//Do something with the error
}else{
//data is the json response that you recieved from the server
}
}
function statsget() {
var uname = document.getElementById("nameget").value;
var data = getJSON(`https://www.reddit.com/user/${uname}/circle.json`, yourCallBackFunction);
}
如果您需要更多详细信息,请与我们联系。
答案 1 :(得分:0)
如果你想使用纯Javascript,那么在不编写自己的函数的情况下已经有了内置的方法:
function statsget() {
var uname = 'CertainPerformance';
fetch(`https://www.reddit.com/user/${uname}/circle.json`)
.then(res => res.json())
.then(resJSON => {
// interact with resJSON here
console.log(resJSON);
});
}
statsget();

与回调相比,Promise的使用效果要好得多。
答案 2 :(得分:0)
应该在statsget
方法中定义回调函数。这样的事情。
function statsget() {
var uname = document.getElementById("nameget").value;
getJSON(`https://www.reddit.com/user/${uname}/circle.json`,
function(data) {
var stats = JSON.parse(data);
alert(data.is_betrayed);
});
}
答案 3 :(得分:0)
由于您没有使用callback
函数,因此它没有按照您期望的方式工作(即使您在getJSON
函数中将其作为传递的参数)
事情是 - 这个函数假设在你得到答案后被调用。 添加这样的东西来检查
var processingData = function(status, data){
console.log("my data is here:\n", data);
if(status == null) {
return data;
}
}
function statsget() {
var uname = document.getElementById("nameget").value;
var data = getJSON(`https://www.reddit.com/user/${uname}/circle.json`, processingData);
var stats = JSON.parse(data);
alert(data.is_betrayed);
}