私はこの問題を解決するためにJSONを知っていますが、実装に問題があります。ここに私のアプローチの詳細は以下のとおりです。PythonからJavascript(JSON)にデータを送信
- データのサイズが動的であるので、私は私の出力のための余分なHTMLテーブルの行を作成するためにJavaScriptを使用する必要があるため、データはPython
- で計算されています。その結果、私はPythonからJavaScriptにデータを渡して、Javascriptにデータを '参照'させる必要があります。 HTMLコード
(以下、出力ページを作成するために私のHTMLコードのセクションです):「outputpage_js:
class OutputPage(webapp.RequestHandler):
def func (a,b):
return a+b #just an example
def get(self):
form = cgi.FieldStorage()
chem_name = form.getvalue('chemical_name')
Para1 = form.getvalue('Para1') #get values from input page--user inputs
Para1 = float(Para1)
Para2 = form.getvalue('Para2') #get values from input page--user inputs
Para2 = float(Para2)
out = func (Para1,Para1)
out_json=simplejson.dumps(out) # I need to send out to JavaScript
#writ output page
templatepath = os.path.dirname(__file__) + '/../templates/'
html = html + template.render (templatepath + 'outputpage_start.html', {})
html = html + template.render (templatepath + 'outputpage_js.html', {})
html = html + """<table width="500" class='out', border="1">
<tr>
<td>parameter 1</td>
<td> </td>
<td>%s</td>
</tr>
<tr>
<td>parameter 2</td>
<td> </td>
<td>%s</td>
</tr>
</table><br>"""%(Para1, Para2)
html = html + template.render(templatepath + 'outputpage_end.html', {})
#attempt to 'send' Python data (out_json) to JavaScript, but I failed.
html = html + template.render({"my_data": out_json})
self.response.out.write(html)
app = webapp.WSGIApplication([('/.*', OutputPage)], debug=True)
JavaScriptのコード(私はフライファイル名を追加入力テーブルを作成するためにJavaScriptを使用しています。 html '):
<script>
<script type='text/javascript'>
$(document).ready(function(){
//I assume if my Json statement works, I should be able to use the following argument to create a HTML row
$('<tr><td>Parameter 2</td><td> </td><td>out_json</td>').appendTo('.app')
</script>
ありがとうございます!
try:
import simplejson as json
except:
import json
out = {'key': 'value', 'key2': 4}
print json.dumps(out)
EDIT: tadeckが指摘したように、あなたがJSONを "実装" する必要はありません
なぜ、正確にHTMLコードを生成する同じテンプレートでデータを渡そうとしていますか?あなたの質問には動的ロード(AJAXのような)はありません。Pythonを使って生成できなかったテンプレートの一部を生成するJavaScriptコードは必要ありません。私は正しいですか? – Tadeck
@Tadeck、JavaScriptを使用する理由は、JavaScriptを使用してhtmlテーブルを作成する必要があるためです。さらに、私のデータのサイズは動的です。 JSONを使ってJavaScriptにデータを渡し、それを処理させる方が良いと思います。また、Jqplotを使用して数値を生成する必要もあります。現在、私は隠されたhtmlテーブルのすべての値を生成し、idネームを選択してJavaScriptを取得させます。しかし、私はこれを行うためのよりよい方法があるべきだと思います。 –
@Taoは、動的に更新されるデータですか?ユーザーは、ページを更新しなくてもデータの変更をその場で見ることができますか?動的な場合は、JSON(HTMLなし)を返すURLからJSONデータをリクエストするには、AJAXコードが必要です。ページが読み込まれたときにデータがわかっている場合は、JavaScriptデータ構造をページテンプレートに追加するだけです。 JSONまたはAJAXは必要ありません。 – jiggy