2012-11-06 65 views
0

首先请原谅我的无知,我对这一切都很陌生。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 %} 

我希望已收到新坐标数据也推给客户。

我希望有人可以提供帮助。

感谢

+0

我认为这是你用于getJSON调用的URL。不确定$ SCRIPT_ROOT是什么,但这应该是一个URL而不是文件位置。 – aezell

+0

我用例子中的文件位置。他们声明使用文件位置的原因是:如果您开发的答案非常简单:它位于localhost端口上,并直接位于该服务器的根目录。但是如果您以后决定将您的应用程序移动到其他位置呢?例如http://example.com/myapp?在服务器端,这从来都不是问题,因为我们使用了可以为我们回答这个问题的方便的url_for()函数,但是如果我们使用jQuery,我们不应该硬编码到应用程序的路径,而是使其成为动态的,所以如何能够我们这样做? – user94628

+0

不确定谁“他们”是,但这必须是一个URL。 'getJSON'说HTTP而不是文件I/O。我从来没有看到这个工作,但只有一个URL。我可能是错的。至于你对移动网站的担心,你不会使用整个域名,只是在主机名后的位。在你的情况下,它可能只是'/ _reader'。 – aezell

回答

2

不确定您的线 回报jsonify(CI,DOC)

你确定这将返回正确?参数应该是字典格式。你可以试试这个,而不是

return jsonify(dict(ci=ci, doc=doc)) 
+0

嗨,我已经尝试过,仍然没有返回到客户端浏览器。 – user94628

+0

为ci和doc打印什么。 – codegeek

+0

当我运行程序它打印:“{u'_id':ObjectId('50994de11d41c80f20b4fa0d'),u'coordinates':{u'type':u'Point',u'coordinates':[-0.20583153,51.42092323]} } 1“每当twitter流式api发现坐标数据时都会打印此数据 – user94628

相关问题