2016-04-19 2 views
1

jsonのjavascriptに結果を渡しました。しかし、var myList = {{ pass_tmp|tojson|safe }}を使用して結果をjsonに変換すると、TypeError: ObjectId('') is not JSON serializableというバグがあります。私はこの質問TypeError: ObjectId('') is not JSON serializableを読んだ。しかし、この質問の状況は私とは少し異なります。フリンジテンプレートの代わりにpython file.Andをjsonに変換しなければなりません。コマンドを使用してvar myList = {{ pass_tmp|tojson|safe }}これをHTMLから渡す必要がありますjavascript.SoにObjectIdStringに変換できますか? は、ここに私のフラスコアプリのコードです:ObjectIdをPythonでStringに変換するには?

ここ
@app.route('/details/', methods=['GET']) 
def details(): 
    if request.method == 'GET': 
     mongoClient = pymongo.MongoClient('localhost', 27017) 
     name = session['name'] 
     print name 
     db = mongoClient[name] 
     results = db[name].find() 
     json_results= [] 
     for result in results: 
      json_results.append(result) 
     # json_tmp = toJson(json_results) 
     return render_template('details.html', pass_tmp=json_results) 

私のテンプレート(ジャバスクリプト)のコードは次のとおりです。

var myList = {{ pass_tmp|tojson|safe }} 
     // Builds the HTML Table out of myList json data from Ivy restful service. 
     function buildHtmlTable() { 
      var columns = addAllColumnHeaders(myList); 

      for (var i = 0 ; i < myList.length ; i++) { 
       var row$ = $('<tr/>'); 
       for (var colIndex = 0 ; colIndex < columns.length ; colIndex++) { 
        var cellValue = myList[i][columns[colIndex]]; 

        if (cellValue == null) { cellValue = ""; } 

        row$.append($('<td/>').html(cellValue)); 
       } 
       $("#excelDataTable").append(row$); 
      } 
     } 

だから、誰もがこの問題を解決するための任意の良い提案を持っていますか?

+0

http://stackoverflow.com/questions/23902596/how-to-use-flask-jsonify-and-render-a-templateを-in-a-flask-route試してみてください。私は自信がない。 –

+0

私はちょうどあなたが助けてくれてありがとうございました~~~テンプレートにjsonを渡すことでこの問題を解決しました –

+0

あなたの歓迎。 :) –

答えて

0

私はこの問題を、結果の代わりにテンプレートにjsonを渡すだけで解決しました。

@app.route('/details/', methods=['GET']) 
def details(): 
    if request.method == 'GET': 
     mongoClient = pymongo.MongoClient('localhost', 27017) 
     name = session['name'] 
     print name 
     db = mongoClient[name] 
     results = db[name].find() 
     json_results= [] 
     for result in results: 
      json_results.append(result) 
     json_tmp = toJson(json_results) 
     return render_template('details.html', pass_tmp=json_tmp) 

、テンプレートでこれを使用します。 var myList = {{ pass_tmp|safe }}の代わりvar myList = {{pass_tmp|tojson|safe}}

関連する問題