2014-09-01 21 views
0

我正在嘗試爲日誌顯示創建一個簡單的Web應用程序。在網絡端:python 3.4和flask,在客戶端,它是簡單的帶有Ajax的web表單。無法通過ajax和燒瓶獲得json

瓶:

import json 
from flask import Flask, jsonify, render_template, request 

app = Flask(__name__) 

@app.route('/json_test', methods=['GET']) 
def json_test(): 
    return open('log.json').read() 


@app.route('/') 
def index(): 
    return render_template('layout.html') 

if __name__ == '__main__': 
    app.run(debug=True) 

我的HTML表單

<!DOCTYPE html> 
<script type=text/javascript src="{{ 
    url_for('static', filename='jquery.js') }}"></script> 
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
<script>window.jQuery || document.write('<script src="{{ 
    url_for('static', filename='jquery.js') }}">\x3C/script>')</script> 

<script type=text/javascript> 
    $LOG = {{ request.script_root|tojson|safe }}; 
</script> 


<script type=text/javascript> 
    $(function() { 
     $('a#log').bind('click', function() { 
      $.getJSON($LOG + '/json_test', 
       function(data){ 
        $("#logs").text(data.result); 
        }); 
        return false; 
      }); 
    }); 
</script> 


<p> 
    <span id=logs>Logs should be here</span> 
    <a href=# id=log>take log</a> 
</p> 
</html> 

我的JSON例子:

{ 
"data": 
{ 
    "misc": 
    [ 
     { 
      "name" : "JSON 1", 
      "type" : "1" 
     }, 

     { 
      "name" : "JSON 2", 
      "type" : "2" 
     } 
    ] 
} 
} 

我想發送日誌的一部分,每5秒。爲此,我計劃使用js函數:setInterval。我對嗎?

回答

0

您的JSON數據沒有result密鑰。相反,您有一個data密鑰。

data.data結果放入<span>只會插入文字[object Object]但是;你需要插入實際的文字。你可以把對象返回給JSON文本或許,使用JSON.stringify()

$("#logs").text(JSON.stringify(data.data)); 

,或者你可以發送一些更有意義吧。