質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Flask

FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

6641閲覧

JavaScriptからFlaskにデータを送る方法

tkr1205

総合スコア13

Flask

FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/04/24 06:41

オセロAIのwebアプリを作ろうと考えています.

オセロの手の思考はPythonで行い,画面の表示はHTML, JavaScriptを用いて行う予定です.
そこで,人の打つ手をJavaScriptからPythonのFlaskに送信したいのですが,どのようにすればできるのでしょうか?調べてもFlaskからJavaScriptにデータを送信する方法しか見つからなかったので,教えていただきたいです.

Python3

1from flask import Flask, render_template, request, session, url_for 2import numpy as np 3 4app = Flask(__name__) 5board = np.random.randint(0, 3, (8, 8)).tolist() 6 7@app.route('/', methods=['GET', 'POST']) 8def index(): 9 print(board) 10 return render_template('index.html', board=board) 11 12 13@app.route('/play', methods=['GET', 'POST']) 14def play(): 15 if request.method == 'POST': 16 play = request.args.get("index") 17 print(play) 18 if play: 19 print(int(play)) 20 board[play//8][play%8] = 1 21 return render_template('index.html', board=board) 22 23 24if __name__ == '__main__': 25 app.run()

html

1<!DOCTYPE html> 2<html lang="ja"> 3<head> 4 <meta charset="UTF-8"> 5 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 6 <title>Othello</title> 7 <style> 8 9 .table { 10 position:absolute; 11 top: 50%; 12 left: 50%; 13 margin-top: -257px; 14 margin-left: -257px; 15 } 16 17 .table td { 18 width: 60px; 19 height: 60px; 20 background-color: #ddd; 21 text-align: center; 22 font-size: 3.8vw; 23 cursor: pointer; 24 } 25 26 .list { 27 max-width: 750px; 28 margin: 0 auto; 29 list-style: none; 30 background-color: #fff; 31 padding: 0; 32 } 33 34 .list-item { 35 display: flex; 36 display: -webkit-flex; 37 -webkit-justify-content: flex-start; 38 justify-content: flex-start; 39 border-bottom: 2px solid #ddd; 40 } 41 .list-item > * { 42 width: 50px; 43 padding: 5px 10px; 44 text-align: center; 45 } 46 .list-item *:last-child { 47 -webkit-flex-grow: 1; 48 flex-grow: 1; 49 } 50 </style> 51 <script src="static/js/script.js"></script> 52</head> 53<body> 54 <p id="index">index</p> 55 <table class="table" id="board"> 56 {% for col in board %} 57 <tr> 58 {% for row in col %} 59 {% if row == 1 %} 60 <td></td> 61 {% elif row == 2 %} 62 <td></td> 63 {% elif row == -1 %} 64 <td>?</td> 65 {% else %} 66 <td></td> 67 {% endif %} 68 {% endfor %} 69 </tr> 70 {% endfor %} 71 </table> 72</body> 73</html>

javascript

1window.onload = function(){ 2 3 var $tableElements = document.getElementsByTagName('td'); 4 let order = true; 5 let othelloWhte = '◯'; 6 let othelloBlack = '●'; 7 let othelloColor = othelloBlack; 8 var index_show = document.getElementById("index"); 9 10 for (let $i=0; $i < $tableElements.length; $i++) { 11 $tableElements[$i].addEventListener('click', function(){ 12 let tableElements = [].slice.call($tableElements); 13 let index = tableElements.indexOf(this); 14 index_show.innerHTML = index; 15 putOthello(index); 16 changeOrder(); 17 }); 18 } 19 20 21 function putOthello(index) { 22 $tableElements[index].innerHTML = othelloColor; 23 } 24 function changeOrder() { 25 if (order) { 26 othelloColor = othelloWhte; 27 order = false; 28 } else { 29 othelloColor = othelloBlack; 30 order = true; 31 } 32 } 33}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

JavaScriptからサーバへデータを送りたいなら、getかpostを使って送れば良いと思います。
手を送りたいということですので、postあたりを使えば良いと思います。
JavaScriptでPOSTする場合は、XMLHttpRequestやjQueryやFetchを使うのが一般的と思います。

以下を参考に送ってみてください。
XMLHttpRequest.send()
$.post() (jQuery 1.9)
Fetch を使う

flask側でpostを受け取る設定にしているようですので、データは受けられるはずです。
どんなデータ形式で送信するかにより処理は変わると思いますので、自分が分かり安いのを使うと良いと思います。
(受けるところは後にして、とりあえず送る方を実装しましょう)

postがよくわからない場合は、とりあえずフォーム作って「送信」を押して、どのような動きをするのか確認してみたらよいでしょう。
<FORM> …… 入力・送信フォームを作成する

投稿2020/04/24 06:58

FiroProchainezo

総合スコア2401

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tkr1205

2020/04/25 02:51

fetch()を使って解決できました. ありがとうございました.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問