live server上XMLHttpRequests中的Javascript变量重置为零

live server上XMLHttpRequests中的Javascript变量重置为零,javascript,xmlhttprequest,Javascript,Xmlhttprequest,我对此感到有点困惑,因为在我的本地主机上它成功了 当我运行代码时,我会先生成一个变量randomid,现在我想在XMLHttpRequest的响应中使用这个id,但是console.log显示变量randomid已更改: var randomid = "8bqfqm2q"; console.log("../export/" + randomid + ".ff" ); var xhr = new XMLHttpRequest(); xhr.onreadystatechange = functi

我对此感到有点困惑,因为在我的本地主机上它成功了

当我运行代码时,我会先生成一个变量
randomid
,现在我想在XMLHttpRequest的响应中使用这个id,但是console.log显示变量
randomid
已更改:

var randomid = "8bqfqm2q";

console.log("../export/" + randomid + ".ff" );

var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
    if (xhr.readyState == XMLHttpRequest.DONE) {
        console.log("../export/" + randomid + ".ff" );
    }
}
xhr.open('POST', "../phpfile.php", true);
xhr.send(new FormData(document.getElementById("myform")));
控制台打印:

../export/8bqfqm2q.ff
../export/.ff
但是,当我这样做时:

document.getElementById("passfilterid").value = "8bqfqm2q";
并将
document.getElementById(“passfilterid”).value而不是
randomid
传递到控制台日志。。它起作用了


我不明白,发生了什么事?这段代码在我的本地主机上运行得非常好,所以我不知道该怎么办。我也没有收到任何错误。

您可以将callbackfunction添加到xhtp对象并向其传递值,也可以将属性添加到xhtp对象并在函数内检索它

var xhr = new XMLHttpRequest();
xhr.randomid = "8bqfqm2q";
xhr.onreadystatechange = function() {

    if (xhr.readyState == XMLHttpRequest.DONE) {
        console.log("../export/" + this.randomid + ".ff" );
    }
}