Javascript 在响应准备就绪之前,如何使用xmlhttprequest发出请求?
我试图向一个路由发出请求,该路由对一个API进行查询,如果API有数据,则响应是用API数据呈现另一个网站。但是,如果数据尚未准备好,因为它仍在处理中,路由将返回一个字符串“尚未完成” 我希望做的是:发出get请求,如果响应“尚未完成”,请等待5秒钟,然后再次执行请求,直到响应成为数据。之后,脚本将打开包含加载数据的新页面的窗口 以下是我已经做的:Javascript 在响应准备就绪之前,如何使用xmlhttprequest发出请求?,javascript,ajax,xmlhttprequest,Javascript,Ajax,Xmlhttprequest,我试图向一个路由发出请求,该路由对一个API进行查询,如果API有数据,则响应是用API数据呈现另一个网站。但是,如果数据尚未准备好,因为它仍在处理中,路由将返回一个字符串“尚未完成” 我希望做的是:发出get请求,如果响应“尚未完成”,请等待5秒钟,然后再次执行请求,直到响应成为数据。之后,脚本将打开包含加载数据的新页面的窗口 以下是我已经做的: job_id = document.querySelector("#job_id").getAttribute("va
job_id = document.querySelector("#job_id").getAttribute("value")
code = document.querySelector("#code").getAttribute("value")
var myRequest = new XMLHttpRequest();
myRequest.open('GET', `http://127.0.0.1:5000/status/${job_id}/${code}`);
myRequest.onreadystatechange = function () {
if (myRequest.readyState === 4 && myRequest.responseText != 'not finished yet') {
window.location = `http://127.0.0.1:5000/status/${job_id}/${code}`
}
};
如果有人知道它是否有效,或者知道更好的处理方法,我会感谢你的帮助
提前谢谢
解决方案:
几个小时后,我终于找到了处理它的方法。还是不知道这是不是最好的办法
function search() {
job_id = document.querySelector("#job_id").getAttribute("value")
code = document.querySelector("#code").getAttribute("value")
var myRequest = new XMLHttpRequest();
myRequest.open('GET', `http://127.0.0.1:5000/status/${job_id}/${code}`);
myRequest.send();
myRequest.onreadystatechange = function () {
if (myRequest.readyState === 4 && myRequest.responseText === 'not finished yet') { setTimeout(function () {search();}, 5000)
}
else if(myRequest.readyState === 4 && myRequest.responseText != 'not finished yet')
{ window.location = `http://127.0.0.1:5000/status/${job_id}/${code}`}}
}
search()
我使用
var选项={}代码>作为处理OOP(面向对象编程)的全局对象
您要做的是,当您需要定义某个对象时,为其提供函数前缀和标识符,以便避免冲突
您发布了一些代码,因此在1的声誉和体面的格式方面,您比大多数从1开始的人做得好得多。假设你的工作ID是79。因此,您需要定义以下内容:
option.job_79 = 1;
现在我将子对象a 1指定为状态,它已初始化。由于选项
对象是全局范围,您可以再次调用ajax()
函数,而不必知道另一个ajax()
函数已经在运行,您只需检查类型选项。作业\u 79
即可
一些建议:
如果您热衷于编程,您最终会希望将所有AJAX函数合并到一个经过优化的函数中,这不仅会大大简化代码,而且前期成本会为您节省,越早越好(尽管随着时间的推移,您需要对其进行更多的优化)
还要避免框架和库的弊端。人们对它们非常重视,但几年后当你想要更新时,你必须花上几天或几周的时间重构代码。除了我的经验水平之外,我从来没有因为浏览器更新而不得不只使用纯JavaScript重构代码。在这条道路上还隐藏着许多其他好处,而大多数人都没有意识到这一点