我在函数中有一个XMLHttpRequest,结果正常。但是我无法返回这个值。
plugin.js
var users = getUsers(url);
pluginfunctions.js
function getUsers(u) {
var obRespuesta = [];
var client = new XMLHttpRequest();
client.onreadystatechange = function() {
if (client.readyState == XMLHttpRequest.DONE) {
obRespuesta = JSON.parse(client.responseText);
console.log(obRespuesta);
}
};
client.open("GET", "http://localhost/extencio/index.php?url=" + u, true);
client.send();
console.log(obRespuesta);
return obRespuesta;
}
好的,obRespuesta是一个空数组。 第一个console.log的值是:array [2]。它运作良好。
但是最后一个console.log和return的值是一个空数组。阵列[0]
我认为这是因为返回是在客户端更改状态之前执行的。
我该如何解决?
答案 0 :(得分:1)
您需要让您的函数接受回调并调用该回调。
function getUsers(u, callback) {
var obRespuesta = [];
var client = new XMLHttpRequest();
client.onreadystatechange = function() {
if (client.readyState == XMLHttpRequest.DONE) {
obRespuesta = JSON.parse(client.responseText);
callback(obRespuesta);
}
};
client.open("GET", "http://localhost/extencio/index.php?url=" + u, true);
client.send();
}
现在您可以通过以下方式获取用户:
getUsers(url, function(users) {
//do your parsing with users
});