2016-02-03 4 views
0

У меня есть 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; 

} 

Ok, obRespuesta является пустой массив. Значение первого console.log: array [2]. это работает хорошо.

Но значение последнего console.log и return - пустой массив. array [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 
}); 
Смежные вопросы