我正在尝试运行一些python代码,这些代码是通过Flask提供的,我希望这些python代码将一个值返回给javascript,这样我就可以在那里使用它。
在这种情况下,我在HTML中有一个按钮,当我点击它时,我想要一个python代码(通过Flask提供)运行,它应该返回"Hello“,我可以在HTML中使用它,就像显示它或存储它的另一个变量一样。
以下是我的代码:
ajax.html
<!doctype html>
<html>
<head>
<title>country</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>
</head>
<body>
<button id="btn" onclick="flaskcall()">display</button>
<p id="display-here">Display here {{ temp }}</p>
<script>
function flaskcall()
{
$.ajax(
{
type: "POST",
url: "/hello",
dataType: "html",
success: function(msg)
{
console.log(msg);
$("#display-here").html(msg);
},
error: function (xhr, status, error) {
console.log(error);
}
});
}
</script>
</body>
</html>
flaskajax.py
from flask import Flask
app = Flask(__name__)
@app.route("/hello", methods=['GET', 'POST'])
def Hello():
message = "Hello"
return render_template("ajax.html", temp=message)
if __name__ == '__main__':
app.run(debug=True)
webserver.py
import SimpleHTTPServer
import SocketServer
PORT = 8888
Handler = SimpleHTTPServer.SimpleHTTPRequestHandler
httpd = SocketServer.TCPServer(("", PORT), Handler)
print "serving at port", PORT
httpd.serve_forever()
我正在运行webserver.py
,正在导航到http://localhost:8888/ajax.html
,当我按下display
按钮时,我看到了这个错误
我甚至不知道我这样做的方式是否正确,我也不理解GET和POST方法。如果有人理解我实际上想做什么,如果他们能向我解释幕后到底发生了什么,我将不胜感激。如果您需要任何其他信息,请留言。
发布于 2018-09-22 00:16:49
这是你的第二台服务器,使用flask:
from flask import Flask, Response
app = Flask(__name__)
@app.route("/ajax")
def Hello():
resp = Response("Hello")
resp.headers['Access-Control-Allow-Origin'] = '*'
return resp
if __name__ == '__main__':
app.run(debug=True)
最重要的是如图所示设置头部,否则浏览器将不允许AJAX请求,因为它发往不同的服务器。
在您的index.html
中,暂时将以下代码放入<body>
中:
<h1>Hello from Flask.</h1>
<button id="btn" onclick="flaskcall()">display</button>
<p id="display-here"></p>
<script>
function flaskcall() {
fetch("//localhost:5000/ajax").then(res => res.text()).then(res => {
document.querySelector("#display-here").textContent = res;
});
}
</script>
该函数将使用AJAX从flask服务器请求GET /ajax
,服务器将回复Hello
。然后将响应插入到文档中(为了安全起见,使用非jQuery版本)。
发布于 2018-09-22 00:18:08
看起来您正在运行webserver.py,这与您的flask应用程序没有任何关系。
您应该这样运行它:
python flaskajax.py
它将运行自己的you服务器并监听default 5000,您可以浏览http://localhost:5000/hello
但是,您的代码有一些问题,您忘记导入render_template。这就是它应该是什么样子,
from flask import Flask
from flask import render_template
app = Flask(__name__)
@app.route("/hello", methods=['GET', 'POST'])
def Hello():
message = "Hello"
return render_template("ajax.html", temp=message)
if __name__ == '__main__':
app.run(debug=True)
https://stackoverflow.com/questions/52447266
复制相似问题