我的应用服务器:python + flask UI:带回调和POST方法的html + javascript
应用程序运行正常,重定向,休息api调用等: http://127.0.0.1:5000/ 单击“提交”按钮时,没有任何反应: http://localhost:5000/ 也没有发生任何事情: http://finhelper.herokuapp.com/< - html + java脚本可以在这里阅读
我认为在没有127.0.0.1的情况下运行时,没有一个Javascripts因某些原因而工作。 CSS和单独的页面可以工作。
编辑:
以下javascripts带我去:http://127.0.0.1:5000/approve 与以下相同: http://finhelper.herokuapp.com/approve
此重定向不适用于Heroku。
<script type="text/javascript">
function Submit(callback) {
//url = 'http://finhelper.herokuapp.com/api';
url = '/api';
ItemJSON = '[ {"Married": 0,"Education": 0,"ApplicantIncome": 5000,"CoapplicantIncome": 1100,"LoanAmount": 150,"Credit_History": 1}]';
//alert(url);
var xhttp;
var l_redir ='/';
xhttp=new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
//alert('in this');
myFunction(this);
}
};
xhttp.open("POST", url, true);
xhttp.setRequestHeader("Content-type", "application/json");
xhttp.send(ItemJSON);
//alert('sent REST call');
window.location.href = l_redir; //not being used
return false;
}
function myFunction(xhttp) { //Callback function
//alert('in callback');
retval = xhttp.responseText;
//alert(retval);
var redir = '-';
if (retval.includes("approved")) {
redir = "/approve";
} else {
redir = "/reject";
}
//alert(redir);
redirect(redir); //Final redirection depending upon ML Return value
}
function redirect(redir) {
window.location.href = redir;
return false;
}
</script>
第二次编辑: 我可以从CURL访问在同一个app.py上运行的POST API,但不能从Javascript访问。因此,没有获得使用alert()标识的httpResponse。 有什么理由或建议吗?
curl http://finhelper.herokuapp.com/api -k -X POST -H "Content-Type: application/json" -d "[{\"Married\": 0,\"Education\": 0,\"ApplicantIncome\": 5000,\"CoapplicantIncome\": 1100,\"LoanAmount\": 150,\"Credit_History\": 1}]"
答案 0 :(得分:0)
使用 app.run(host ='0.0.0.0')而不是 app.run()
答案 1 :(得分:0)
我几乎在javascript的每一步都添加了alert()。 事实证明,在Heroku上,python REST应用程序花了更长的时间,因此异步ajax调用超时。
目前我已经添加了一些延迟,但理想的方法是在下面实现: Need a delay function javascript