javascript - 如何将变量传递到 HttpRequest 中?

标签 javascript xmlhttprequest

我想给 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/

相关文章:

Eclipse 的 Javascript 插件?

javascript - 安全问题: Parsing HTML with XMLHttpRequest?

javascript - 包装在 Promise 中生成 XMLHttpRequest 的绑定(bind)函数时出现问题

xml - 没有来自 XMLHttpRequest 的响应

javascript - 检查 Angular 中 select 中的选项

c# - 如何在多个 visual studio 项目中组织我们的 javascript

javascript - 禁用 vuetify 中 v-autocomplete 中的选定选项

javascript - html before after 属性不起作用

javascript - xmlHttpRequest 对象生命周期中的哪一点被序列化 XML 解析为 DOM?

javascript - 如何检查 HTTP 请求是否在浏览器中打开?