2017-08-30 55 views
1

我是Jquery的新手,下面的腳本不會在HTML頁面上產生任何輸出。從python腳本發送JSON到JQuery

問題

在我的劇本,我使用requests庫發送GET請求返回一個JSON對象的燒瓶中的URL。然後需要將該對象發送給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> 

回答

3

要打印的Python數據結構,而不是JSON。 requests.json()將Flask響應解碼爲Python字典,列表,字符串,數字,布爾值以及可能的None。這不是JSON數據。

只需將您的數據保存爲JSON數據並打印您收到的文本即可。你的腳本不過是一個代理,不需要解釋JSON數據。

如果您必須解碼(也許您想對包含的數據應用一些轉換),請確保您再次編碼回JSON。使用json.dumps()可以生成新的JSON編碼的字符串。

+0

我應該使用'response.text'然後在JQuery中使用'dataType:'json''嗎?不需要轉換,我只需要從Jquery – omrakhur

+0

@omrakhur中的鍵中提取值:然後只需輸出Unicode文本的'response.text',或直接將'response.content'寫入'sys.stdout。緩衝區「來避免從字節解碼並再次編碼。 –

+0

我在'response.content'和'response.text'之間有些困惑。如果我使用前者,那麼當它返回給JQuery時它仍然會被視爲JSON嗎? – omrakhur