2016-11-16 68 views
-1

這是我的第一篇文章,我總是找到有用的信息,但這次我輪到幹!蟒蛇AJAX FLASK GET刷新

我試圖顯示和刷新數據出價&問在html上,數據是在python模塊中生成的。我試圖用jQuery和Ajax來做到這一點。

這是我發送的JSON,更準確地說,我打算髮送一個列表與每對貨幣,在這裏單一條目USDJPY

{'Bid': 109.355, 'Ask': 109.368} 

這裏是Python代碼:

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

app = Flask(__name__) 

def getspot(): 
    oanda = oandapy.API(environment="practice", access_token="XXXXX") 

    response = oanda.get_prices(instruments="USD_JPY") 

    prices = response.get("prices") 

    #posts = {"Bid": biding_price,"Ask" : asking_price} 
    posts = [dict(Bid=prices[0].get("bid"),Ask=prices[0].get("ask"))] 

    return posts 


@app.route('/_update_USDJPY',methods=["GET"]) 
def getUSDJY(): 

    return jsonify(getspot()) 

@app.route('/',methods=["GET"]) 
def index(): 

    posts = getspot() 

    return render_template("basic2.html") 

if __name__=="__main__": 
    app.run() 

這裏是我的html頁面:

<script src="https://code.jquery.com/jquery-1.10.2.js"></script> 

<script type=text/javascript> 
setInterval(        
    function() 
    { 
    $.getJSON(       
     $SCRIPT_ROOT + '_update_USDJPY',  
     {},         
     function(data)      
     { 
      $("#post").text(data.post);        

     }); 
    }, 
    500); 

</script> 


{% block content %} 
    {% for post in posts %} 
     <strong>Ask:</strong> {{ post.Ask }} 
     <strong>Bid:</strong> {{ post.Bid }} 
     <br> 
    {% endfor %} 
{% endblock %} 

預先感謝您。

+0

其實我意識到我沒有說帽子是錯的,它不顯示任何東西,我不知道如何調試javascript – juliensc

+0

定義了$ SCRIPT_ROOT嗎? –

+0

我沒有定義它,我應該在哪裏定義它? – juliensc

回答

2

將腳本標記添加到我們的頁面,該腳本標記將全局變量設置爲應用程序根目錄的前綴。事情是這樣的:

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

你的JavaScript代碼將是這樣的:

$(function() { 
     $.getJSON($SCRIPT_ROOT + '/_update_USDJPY', { 
     }, function(data) { 
     $("#post").text(data.post); 
     }); 
     return false; 
    }); 
    }); 

在HTML:

{% block content %} 
    {% for post in posts %} 
    <strong>Ask:</strong> <div id='post'>{{ post }}</div> 
    <strong>Bid:</strong> <div id='post'>{{ post }}</div> 
    <br> 
    {% endfor %} 
{% endblock %} 

它不是測試只是知道它怎麼能