我想给 request.onload 函数一个变量,并将 request.response 添加到该变量中。我该怎么做?
function loadathing(url, target){
var request = new XMLHttpRequest();
request.open("GET", url, true);
request.onload = function() {
target = request.response;
};
}
这不起作用,因为它忘记了目标是什么。
最佳答案
这里有两个问题。首先,为了将响应传递给 target
,您需要在 target 的属性上执行此操作,而不是直接在 target 上执行此操作,因为 target 不能是 native 值(例如字符串和数字等 native 值)不能通过引用传递)。
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);
});
关于javascript - 如何将变量传递到 HttpRequest 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27408513/