首先请原谅我的无知,我对这一切都很陌生。JQuery/Flask - 从服务器向浏览器发送数据为JSON
我的问题是,我试图将存储在坐标mongodb中的json数据发送到客户端浏览器。我有一个使用Twitter的Streaming API存储到数据库的python模块。这工作正常,但是当我尝试发送给客户端时,它什么都不显示,尽管我可以看到服务器终端获取更多数据。我以前没有使用过Flask或JQuery,所以在http://flask.pocoo.org/docs/patterns/jquery/的示例中使用它。
这是我的代码:
from flask import Flask, jsonify, render_template, request
from pymongo import Connection
app = Flask(__name__)
@app.route('/_reader')
def reader():
db = Connection().tstream
coll = db.tweets_tail
cursor = coll.find({"coordinates.type" : "Point" }, {"coordinates" :1},tailable=True,timeout=False)
ci=0
while cursor.alive:
try:
doc = cursor.next()
ci += 1
print doc
print ci
except StopIteration:
pass
return jsonify(ci, doc)
@app.route('/')
def index():
return render_template('index.html')
if __name__ == '__main__':
app.run(debug=True, port= 8888)
这是我的HTML客户端:
{% extends "layout.html" %}
{% block body %}
<script type=text/javascript>
$(function() {
$.getJSON($SCRIPT_ROOT + '/_reader',
function(data) {
$("#result").text(data.result);
});
return false;
});
</script>
<h1>Coordinates</h1>
<p>
<span id=result>?</span>
{% endblock %}
我希望已收到新坐标数据也推给客户。
我希望有人可以提供帮助。
感谢
我认为这是你用于getJSON调用的URL。不确定$ SCRIPT_ROOT是什么,但这应该是一个URL而不是文件位置。 – aezell
我用例子中的文件位置。他们声明使用文件位置的原因是:如果您开发的答案非常简单:它位于localhost端口上,并直接位于该服务器的根目录。但是如果您以后决定将您的应用程序移动到其他位置呢?例如http://example.com/myapp?在服务器端,这从来都不是问题,因为我们使用了可以为我们回答这个问题的方便的url_for()函数,但是如果我们使用jQuery,我们不应该硬编码到应用程序的路径,而是使其成为动态的,所以如何能够我们这样做? – user94628
不确定谁“他们”是,但这必须是一个URL。 'getJSON'说HTTP而不是文件I/O。我从来没有看到这个工作,但只有一个URL。我可能是错的。至于你对移动网站的担心,你不会使用整个域名,只是在主机名后的位。在你的情况下,它可能只是'/ _reader'。 – aezell