2016-11-16 98 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 %} 

它不是测试只是知道它怎么能