Flask App Javascript无法从localhost运行,但可以从127.0.0.1开始工作

时间:2018-04-14 05:25:34

标签: javascript rest post heroku flask

我的应用服务器: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}]"

2 个答案:

答案 0 :(得分:0)

使用 app.run(host ='0.0.0.0')而不是 app.run()

答案 1 :(得分:0)

我几乎在javascript的每一步都添加了alert()。 事实证明,在Heroku上,python REST应用程序花了更长的时间,因此异步ajax调用超时。

目前我已经添加了一些延迟,但理想的方法是在下面实现: Need a delay function javascript