formDataをPOST送信し、pythonでの計算結果をjavascriptで受け取る方法【python,javascriptの連携】
やりたいこと
以下のようなフォームで値をPOST送信し、 pythonで計算した後、javascriptで結果を受け取りたいと思います。
準備
HTMLファイルとpythonファイルを同じ階層(フォルダ)に入れ、 サーバー上でファイルを開いてください。 ローカルサーバーならXAMPPなどがあります。
参考
HTML
<form id="fp" action="./sumple.py"> <!--actionは同じ階層に入れたpythonファイル-->
<input type="number" name="num1" id="num1" placeholder="0"/> <!--nameの指定を忘れずに‼-->
<input type="number" name="num2" id="num2" placeholder="0"/> <!--nameの指定を忘れずに‼-->
</form>
<button id="submit">送信</button>
<div class="result">結果 : </div><!--ここに結果が表示される-->
参考
javascript
const fp = document.getElementById("fp");
const submit = document.getElementById("submit");
const result = document.querySelector(".result");
const url =
"https://xxxxxxxxxxxx/sumple.py"; // pythonファイルのURL
submit.addEventListener("click", () => {
let formData = new FormData(fp); // フォームの値をformDataにセット
async function postData() { // async await をお忘れなく
const res = await fetch(url, { // urlへ
method: "POST", // POST送信
body: formData,
});
const r = await res.json(); // レスポンスをjsonで受け取る
result.textContent = "結果 : " + r;
}
postData();
});
python
15,16行目 : 型を数字にしないと、「1+1=11」になってしまいます。
19行目 : jsonに変換しないと、javascriptで受け取れません。
#!C:/Users/Python39/python.exe (パソコン上のpythonをインストールした場所)
# -*- coding: utf-8 -*-
import cgi
import json
print('Content-type: text/html; charset=UTF-8')
print('')
formData = cgi.FieldStorage() # javascriptからのPOST送信を受け取る
num1 = formData.getvalue('num1')
num2 = formData.getvalue('num2')
num1 = int(num1) #型を数字に
num2 = int(num2) #型を数字に
obj = num1 + num2
jsonObj = json.dumps(obj) # jsonに変換
print(jsonObj)
応用
以上の方法を使って、 Yahoo API のルビ振り を実装することができます。
実装例 : ルビ振りジェネレーター
参考
まとめ
- jsとpythonをサーバー上で開く
- asyncとawaitでPOST送信する
- pythonで計算し、jsonに変換
- javascriptでレスポンスを受け取る
こんな記事も読まれています。
-
【HTML】【CSS】【javascript】電卓の作り方
電卓のソースコードを2つ紹介します。javascriptはわずか数行で書けます。
-
【JacvaScript】【CSS】たった4行のJavaScriptでできるハンバーガーメニューの作り方
たった4行のJavaScriptで作るハンバーガーメニューの作り方について紹介します。✖をつくるには、transform-originがポイントです。
- リンク
-
波紋エフェクトを表現するjqueryのripples-min.jsの使い方
jqueryのripples-min.jsを使うと簡単に水面の波紋を表現できます。波紋の広がりの速度、波紋の大きさ、波紋のブレの値を変えていろいろ表現させると面白いです。
-
【Javascript】querySelectorAllで要素を取得し、クリックしたら、クラスを追加したり、削除したりする方法。
JavascriptのquerySelectorAllで要素を取得し、クリックしたら、クラスを追加したり、削除したりする方法について解説します。querySelectorと同じように書いてしまうとエラーがでます。forEachを使うとすべてに適用できます。
- リンク
-
要素の高さを取得する方法。getBoundingClientRectとは?window.innerHeightとは?window.pageYOffsetとは?
要素の高さを取得する方法について解説します。getBoundingClientRect、window.innerHeight、window.pageYOffsetについて理解し、要素がいつ画面に現れるかを把握できるようにしましょう。
-
Javascriptを使ったページネーションの実装
トップページの記事が増えてきたので、何とかページネーションで最新の記事だけを表示できないかと思っていたら、いい記事を発見しました。カスタマイズして実装することができました。
- リンク
-
【Javascript】マウスの指す(X, Y)座標とドラッグ & ドロップを理解する
マウスの指す(X, Y)座標とドラッグ & ドロップについて解説します。mousedown, mouseover, mousemove, mouseupを使います。
-
【javascript】連想配列をテーブルできれいに表示する方法
javascript(Object.entries)を使って、連想配列の中身をテーブルできれいに表示する方法について紹介します。
- リンク