##■質問
同一ページ内において、AjaxによってFlaskのSQL実行結果をボタン押下時に任意のdivに表で非同期的に表示させたいです。
ご不明な点などございましたら、都度補足して参りますので、ヒントなどをお教えいただけると幸いです。
どうぞ宜しくお願い申し上げます。
##■質問に至るまでに自力で実現できた機能
- ページ読込と同期的に、FlaskによるSQL実行結果を静的ページに表として表示させる
- Ajaxメソッドで単純なテキストを動的に特定のdiv内に表示させる
##参考: 現状のコード群
Flask
1# 同期的にページ読み込み時にSQL結果を表示することはできますが、非同期的にSQL結果を同一ページ内に表示させることができていません。 2@app.route('/products', methods=['GET', 'POST']) 3def products(): 4 cur = mysql.connection.cursor() 5 6 resultValue = cur.execute("SELECT * FROM products") 7 if resultValue > 0: 8 productDetails = cur.fetchall() 9 return render_template('products.html', productDetails=productDetails)
HTML
1<!-- ./templates/products.html --> 2<form method="POST"> 3 <input type="submit" value="SQL実行"> 4</form> 5 6<div id="output"> 7<!-- ここ#outputに、上の「SQL実行」ボタン押下時、Ajaxで「SELECT * FROM products WHERE name LIKE '%ソニー%'」(例)の結果を表示させたいです。 --> 8</div> 9 10<!-- ページ読み込み時、Flaskで同期的にSELECT文を表示させることはできました。 --> 11{% for i in productDetails %} 12<tr> 13 <td>{{i[0]}}</td> <!-- id --> 14 <td>{{i[1]}}</td> <!-- category --> 15 <td><a href={{i[3]}} target="_blank">{{i[2]}}</a></td> <!-- name --> 16</tr> 17{% endfor %}
Javascript
1<!-- 作りかけのAjaxメソッド。テキスト表示はできますがSQL結果を表示できていません。 --> 2<script type="text/javascript"> 3 $(document).ready(function () { 4 $('form').on('submit', function (event) { 5 $.ajax({ 6 // type : 'POST', 7 // url: '/', 8 // dataType: 'html', 9 data: { 10 }, 11 success: function (data) { 12 $('#output').text("テキストは表示できますがFlaskでのSQL実行結果のAjax表示ができません。"); 13 }, 14 }); 15 event.preventDefault(); 16 }); 17 }); 18</script>
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/22 10:55
2020/06/22 11:03
2020/06/22 11:49