这是设置: 我正在从Google Compute Engine VM运行Flask应用程序。我想从另一台服务器(github.io页面,了解其价值)从VM中获取信息。 VM数据目前为json格式,并且是静态的,但最终将被编写脚本以进行更新。
问题:ajax / jquery能够访问请求的页面,但是似乎未返回任何数据。
当我从本地主机或生产环境运行请求时,可以在VM活动日志上看到GET操作弹出。我尝试将脚本作为按钮运行,在文档准备就绪时以及在页面加载时运行,在每种情况下,它似乎都命中了VM,但不返回数据。
当我直接在浏览器中导航到地址时,JSON正常显示,如下所示:
f.add(p, BorderLayout.CENTER);
我对此很陌生,所以很可能我遗漏了一些明显的东西。
我尝试了很多事情
瓶号:
{"otherstuff":"somemorethings","stuff":"Some Number"}
(我在有和没有CORS的情况下都尝试过此操作)
HTML:
import flask
from flask_cors import CORS
app = flask.Flask(__name__)
CORS(app)
@app.route('/', methods=['POST', 'GET'])
def hello():
return flask.jsonify(stuff='Some Number', otherstuff="somemorethings")
if __name__ == '__main__':
app.run(host = '0.0.0.0', port=80)
我意识到这有3种不同的方式,但是由于我是新手,所以我想保留潜在的解决方案,以防其中一种可行。我已经分别尝试了每个。
例如,基本的append(“ part 2a”)确实有效。
所需结果是显示在github.io页面上的Flask结果中的文本,例如“现在我想谈谈数字”。
如果有帮助,我实际上只需要在页面上显示这个数字即可,因此,如果有更简单的方法可以做到,那么我会不知所措。
更新:要添加示例时,它才开始工作。我不确定发生了什么变化,但是看起来就像使用<!DOCTYPE html>
<html>
<head>
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
<script type=text/javascript>
$(document).ready(function(){
$.get(
"http://[the_vm_external_ip]/",
{format: "json"})
.done(
function(data) {
$("#retval").html( "<strong>" + data.stuff + "</strong>" );
}
);
});
</script>
<script>
$(document).ready(function(){$("#where").append("part 2a");})
</script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script>
$(document).ready(function() {
$("button").click(function () {
$.getJSON( "http://[the_vm_external_ip]/", function (a) {
$("#where").append(a.stuff);
});
});
});
</script>
</head>
<body>
<button>Get JSON data</button>
<div id="where">teste</div>
<div id="retval"></div>
</body>
</html>
而不是直接引用var plot_id = data.stuff
一样。工作代码:
data.stuff
此代码按预期显示 Some Number 到retval div。