2017-08-30 16 views
1

私はJqueryの初心者です。下のスクリプトはHTMLページに出力を生成しません。PythonスクリプトからJQueryにJSONを送信

問題

私のスクリプトの中で、私は、JSONオブジェクトを返すフラスコURLにGETリクエストを送信するためにrequestsライブラリを使用しています。このオブジェクトはJQueryに送信され、JSONオブジェクトがWebページに出力されます。もし私が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()は、Pythonの辞書、リスト、文字列、数字、ブール値、おそらくNoneに対するFlaskレスポンスをデコードしました。これはJSONデータではありません。

データをJSONデータとして保存し、受け取ったテキストを印刷してください。あなたのスクリプトはプロキシであるだけで、JSONデータを解釈する必要はありません。

デコードする必要がある場合(含まれているデータに一部の変換を適用する場合など)は、を再度JSONにエンコードするようにしてください。あなたがそうしたときに、新しいJSONエンコード文字列を生成するには、json.dumps()を使用してください。

+0

'response.text'を使い、JQueryで' dataType: 'json''を使うのですか?また、変換は必要ありません。Jquery内のキーから値を抽出する必要があります – omrakhur

+0

@omrakhur:Unicodeテキストの場合は 'response.text'を表示するか、' sys.stdoutに 'response.content'を直接書きます。バイトからのデコードを回避し、再びエンコードすることを意味する。 –

+0

私は 'response.content'と' response.text'の間でちょっと混乱しています。前者を使用すると、JQueryに返されたときにJSONと見なされますか? – omrakhur

関連する問題