gpt4 book ai didi

javascript - XmlHttpRequest 过早返回状态 4

转载 作者:行者123 更新时间:2023-12-02 20:20:46 28 4
gpt4 key购买 nike

我正在开发一个 JavaScript 代码,以便使用 ANT Galio 浏览器在嵌入式设备上运行。

理想情况下,我希望代码能够向另一台服务器发出 get 请求。发出该 get 请求后,页面将不允许用户提交另一个 get 请求,直到收到前一个 get 请求的响应。

出于某种原因,有时我几乎立即收到 4 的 readState。就好像它正在评估前一个 XmlHttpRequest 对象,而不是新的对象。我做错了什么?

 <script type="text/javascript">

var fail= function (env, resp, stat) {

alert(resp);
};
var succ= function (env, resp) {
};

var canScan = true;

/* start scan */
function scan (name) {
if (canScan) {
//deactivate button
deactivateScanButtons();
//let server know
ajax = new XMLHttpRequest();
var scanUrl = 'http://19X.1XX.X.XX:8080/scan/' + name
ajax.open('GET', scanUrl, true);
ajax.onreadystatechange = function() {
if (ajax.readyState==4) {
//allow button to work again
activateScanButtons();
alert("ready state 4");


};
};

ajax.send();
//initiate scan
xrxScanInitiateScan(
'http://127.0.0.1',
"ftp.xst",
false,
succ,
fail);
}

}

function deactivateScanButtons () {
// canScan = false;

var indicator = document.getElementById('buttons');
indicator.style.visibility = "hidden";
}
function activateScanButtons () {
// canScan = true;

var indicator = document.getElementById('buttons');
indicator.style.visibility = "visible";

}
</script>

最佳答案

3条建议:

  1. 为避免客户端进行任何缓存,请将随机生成的数字或当前时间戳添加到请求查询字符串中。
  2. 正如 Yoni 所说,使用 var 关键字启动您的 XMLHttpRequest 对象。
  3. 对于每个请求,将当前时间戳保存在全局变量中。在 onreadystatechange 中,仅当全局时间戳与给定请求的相应时间戳匹配时才调用 activateScanButtons。这样,只有最新的请求才能调用 activateScanButtons

关于javascript - XmlHttpRequest 过早返回状态 4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5607090/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com