У вас здесь две проблемы. Во-первых, чтобы передать ответ target
, вам нужно будет сделать это только для свойства цели, а не для цели, поскольку цель не может быть родным значением (собственные значения, такие как строки и числа, не могут передаваться по ссылке).
function loadathing(url, target){
var request = new XMLHttpRequest();
request.open("GET", url, true);
request.onload = function() {
target.response = request.response;
};
}
var target = {};
loadathing('foo.php', target);
Во-вторых, так как вы выполняете запрос асинхронный AJAX, вам нужно будет добавить функцию обратного вызова для вашей функции, так что внешний код не знает, когда target.response
заполняется.
function loadathing(url, target, cb){
var request = new XMLHttpRequest();
request.open("GET", url, true);
request.onload = function() {
target.response = request.response;
cb();
};
}
var target = {};
loadathing('foo.php', target, function() {
console.log(target.response);
});
Затем вы можете упростить его, удалив цель вместе и используя обратный вызов.
function loadathing(url, cb){
var request = new XMLHttpRequest();
request.open("GET", url, true);
request.onload = function() {
cb(request.response);
};
}
loadathing('foo.php', function (response) {
console.log(response);
});
У меня есть несколько объектов, и я хочу использовать простой вызов функции для запроса информации, а затем добавить ее в объект по своему выбору. Для этого и предназначалась цель. В любом случае, спасибо, я никогда не понимал, что такое обратные вызовы, но теперь я это делаю. Это сработало. – user3032989