【发布时间】:2021-06-11 04:18:59
【问题描述】:
这是我的 HTML 代码:
<html>
<head>
<title>aerator</title>
</head>
<body>
<div id="train"></div>
<div id="predict"></div>
这是我的 Javascript。我正在尝试使用 XMLHttpRequest 为 2 个变量的每个特定间隔获取数据,以便稍后使用它们中的每一个更新带有 div id train 的 html 并预测
$(document).ready(function(){
refresh();
});
function refresh()
{
setTimeoutfunction(){
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("predict").innerHTML = this.responseText;
}
};
xhttp.open("POST", "http://127.0.0.1:5000/predict", true);
xhttp.send();
}, 1100);
setTimeout{function(){
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("train").innerHTML = this.responseText;
}
};
xhttp.open("POST", "http://127.0.0.1:5000/train", true);
xhttp.send();
}, 3000);
}
下面是我的 python 烧瓶代码。我包括了我在上面的 javascript 代码中引用的所需功能。 编辑:我实际上已经尝试过 POST 和 GET 方法,但都没有检索数据。
@app.route("/predict")
def mainPrediksi():
predict = preprocessing('root','','127.0.0.1','database')
if(condition):
X = 'option1'
else:
X = 'option2'
return (X,str(datetime.now()))
@app.route("/train")
def mainTrain():
X_train,X_test,Y_train,Y_test = preprocessing('root','','127.0.0.1','database')
X_train = X_train.astype(float)
Y_train = Y_train.astype(float)
#train classifier
model = train_clf(X_train,Y_train)
# save the model to disk
filename = 'randomForest.sav'
joblib.dump(model, filename)
return ('Success Train Model',str(datetime.now()))
我希望我的 XhttmlRequest 从 /predict 和 /train 获取返回值,但从我在终端中看到的情况来看,它似乎只发布请求而没有得到任何响应。 t 我做错了什么吗?谢谢
【问题讨论】:
-
发生了什么/没有发生什么让您说它不起作用?您没有根据我看到的主要问题描述我期望的症状:您正在使用
setInterval(它安排一个recurring计时器)然后再次调用refresh,它会一遍又一遍地启动 另一个 循环计时器,因此在相对较短的时间内,您将有数千个间隔计时器都在尝试运行。对于一次性计时器,请使用setTimeout。 (而且我建议您在前一个启动的 ajax 请求完成之前不要启动下一个计时器。) -
嗨@T.J.Crowder 感谢您的回复。我期待我的 XhttmlRequest 从
/predict和/train获取返回值,但从我在终端中看到的内容来看,它似乎只发布请求而没有得到任何响应。我对网络编程和烧瓶很陌生,所以我可能错了,但据我所知,每篇文章都应该有正确的回应,但我在终端中没有看到任何回应。
标签: javascript python flask