【问题标题】:JQuery/ Flask - send data from server to browser as JSONJQuery/Flask - 以 JSON 格式将数据从服务器发送到浏览器
【发布时间】:2012-11-06 17:35:12
【问题描述】:

首先请原谅我的无知,我对这一切都很陌生。

我的问题是我正在尝试将存储在 mongodb 坐标中的 json 数据发送到客户端浏览器。我有一个 python 模块,它使用 Twitter 的 Streaming API 存储到数据库中。这很好用,但是当我尝试将其发送到客户端时,它什么也不显示,即使我可以看到服务器终端获取更多数据。我之前没有使用过 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 而不是文件位置。
  • 我在示例中使用了文件位置。他们说使用文件位置的原因是:如果您正在开发答案很简单:它在 localhost 端口上,直接在该服务器的根目录上。但是,如果您后来决定将应用程序移动到其他位置怎么办?例如example.com/myapp?在服务器端,这从来都不是问题,因为我们使用了方便的 url_for() 函数,它可以为我们回答这个问题,但是如果我们使用 jQuery,我们不应该硬编码应用程序的路径,而是让它动态化,那么如何我们这样做?
  • 不确定“他们”是谁,但这必须是一个 URL。 getJSON 使用 HTTP 而不是文件 I/O。除了 URL 之外,我从来没有见过这个工作。我可能是错的。至于您对移动站点的担忧,您不会使用整个域,只是主机名后面的位。在你的情况下,它可能只是/_reader

标签: javascript python jquery flask


【解决方案1】:

不确定您的线路 返回 jsonify(ci, doc)

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

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

【讨论】:

  • 您好,我试过了,客户端浏览器仍然没有返回任何内容。
  • 正在为 ci 和 doc 打印什么。
  • 当我运行程序时,它会打印:“{u'_id': ObjectId('50994de11d41c80f20b4fa0d'), u'coordinates': {u'type': u'Point', u'coordinates': [-0.20583153, 51.42092323]}} 1" 每次 twitter 流 api 找到坐标数据时都会打印出来
  • 如果我现在尝试执行“console.log(data[0]);”在浏览器中页面无法加载。
猜你喜欢
  • 2020-11-21
  • 2021-10-22
  • 2013-10-01
  • 1970-01-01
  • 2015-10-22
  • 1970-01-01
  • 2015-09-15
  • 2020-06-30
  • 2013-01-06
相关资源
最近更新 更多