将JSON从python脚本发送到JQuery

时间:2017-08-30 13:16:21

标签: jquery python html json ajax

我是Jquery的新手,下面我的脚本在HTML页面上没有产生任何输出。

问题

在我的脚本中,我使用requests库向返回JSON对象的Flask URL发送GET请求。然后需要将此对象发送到JQuery,然后JQuery将在网页上输出JSON对象。如果我使用response.text发送数据,它可以正常工作,但如果我使用response.json()发送数据,则不会输出任何内容。但是我需要将它作为JSON对象发送,以便我可以从中提取所有数据并将其放在HTML元素上。

getajaxtest.py

import requests
import json
def send_log_ajax():
     url = 'http://xx.com/returnjsonobj'
     response = requests.get(url)
     return response.json()
if __name__ == '__main__':
     ajax_var = send_log_ajax()
     print(ajax_var)

HTML和JQuery

 <html>
    <head><script
  src="https://code.jquery.com/jquery-3.2.1.min.js"></script></head>
    <body>
    <div style="border:1px solid black;background-color:lightgray">
        <p id="transactioninfo">Loading Transaction Information...</p>
    </div>
    <script>
    function getlogs() {

    var url = 'www.myserver.com/getajaxtest.py';

        $.ajax({
           type: 'GET',
           url: url,
           dataType: 'json',
           success: function(data) {

           $("#transactioninfo").html(data)
        },

        error: function(e) {
            console.log(e.message);
        }
    });

    }
    $(document).ready(function(){

        setTimeout(function(){getlogs();}, 2000);
        setInterval(function(){getlogs();}, 2000);

    });

    </script>

    </body>
    </head>
    </html>

1 个答案:

答案 0 :(得分:3)

您正在打印 Python 数据结构,而不是JSON。 requests.json()解码了Flask对Python词典,列表,字符串,数字,布尔值以及None的响应。这不是JSON数据。

只需将您的数据保存为JSON数据,然后打印您收到的文本。您的脚本只是代理,不需要解释JSON数据。

如果您必须解码(可能您想对所包含的数据应用某些转换),请确保再次编码回JSON 。当你这样做时,使用json.dumps()生成一个新的JSON编码字符串。