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

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

新規登録して質問してみよう
ただいま回答率
85.35%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

JavaScript

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

Python

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

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

Q&A

解決済

1回答

3963閲覧

AjaxでPythonとのデータ送受信ができない

baboo

総合スコア8

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

JavaScript

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

Python

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

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

0グッド

0クリップ

投稿2021/01/10 00:16

#実現したいこと
当方プログラミングを初めて3ヶ月程度です。
自身の勉強をかねて、診断をするようなWebアプリを作っており、下記を実現したいと思っています。

① Webページ上でのイベント(ボタンのクリックなど)をトリガーとしてMySQLのテーブルにクエリを送信したい

② jsでトリガーとしたイベントごとにAjaxを利用して、クエリ送信用のpythonファイルへPOSTしたい

①を目的として、②で実現したいと考えているのですが、②の実装で詰まっている状態です。
お力添えいただけますと幸いです。

#現状
下記などを参考にAjaxの概要を把握した上で、サンプルを実装したいと思っています。

(参考ページ)
https://qiita.com/qiiChan/items/046a2f53cf4d93a6a398

ただお恥ずかしながら上記のページで書いているソースコード(下記に転記しています)をどのように実行していいのか、
他に何か必要なファイル(htmlなど)があるのか、がわかっていない状態です。
(Ajaxの利用方法というのとはまた違った問題かもしれませんが・・・)

#ソースコード

javascript

1let samplePost = function(){ 2 3 //レスポンス 4 var response = {}; 5 6 //リクエスト 7 let request = {para_1 : 12, 8 para_2 : "aaaa", 9 para_3 : encodeURI("日本語送信")}; 10 11 //ajax 12 $.ajax({ 13 type : "POST", 14 url : url, 15 data : JSON.stringify(request), //object -> json 16 async : false, //true:非同期(デフォルト), false:同期 17 dataType : "json", 18 success : function(data) { 19 //data = JSON.parse(data); //error 20 response = data; 21 }, 22 error : function(XMLHttpRequest, textStatus, errorThrown) { 23 console.log("リクエスト時になんらかのエラーが発生しました\n" + url + "\n" + textStatus +":\n" + errorThrown); 24 } 25 }); 26 27 //表示 28 console.log(response); 29}

python

1#!/usr/bin/python 2# -*- coding: utf-8 -*- 3 4 5####################################################### 6# 7# import 8# 9####################################################### 10 11import cgitb 12import cgi 13import os 14import json 15import sys 16import io 17import urllib.parse #url encode/decode 18 19 20####################################################### 21# 22# main 23# 24####################################################### 25def main(): 26 27 #文字化け対策 28 sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8') 29 30 #エラーの内容をブラウザに送信 31 cgitb.enable() 32 33 #値取得 34 data = sys.stdin.read() 35 params = json.loads(data) 36 37 # 38 para_1 = params["para_1"] 39 para_2 = params["para_2"] 40 para_3 = params["para_3"] #url encoded 41 42 #url decode 43 para_3 = urllib.parse.unquote(para_3) 44 45 46 ####################################################### 47 # 48 # 処理 49 # 50 ####################################################### 51 52 #処理 53 54 #レスポンス 55 response = {"res" : "aaaa"} 56 57 58 ####################################################### 59 # 60 # response 61 # 62 ####################################################### 63 64 #print("Content-type: application/json") #error 65 print('Content-type: text/html\nAccess-Control-Allow-Origin: *\n') 66 print("\n\n") 67 print(json.JSONEncoder().encode(response)) 68 print('\n') 69 70 71################################################ 72# 73# main実行 74# 75################################################ 76if __name__ == '__main__': 77 main()

初学者故に抽象的な質問になってしまいすみません。
何卒よろしくお願いいたします。

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2021/01/10 04:01

URL はリンクを挿入していただけると、読む人が便利です。 次回からは入力欄の上のクリップのマークをクリックしてくださいね。
baboo

2021/01/11 02:40

m-oguraさん こちらありがとうございます・・・! 読みやすい質問を心がけます、ご指摘ありがとうございます!
guest

回答1

0

ベストアンサー

この例は CGI を使っているので別途 Apache や nginx といった Web サーバーというものが必要です。また、jQuery を使っているので手法が古いでしょう。両者を使わない形をおすすめします。Flask + fetch API を使った開発がシンプルかつ今どきでよいと思います。
FlaskにAjaxリクエストのFetch APIを組み込んだシンプルなアプリを作成してさくっと説明する - Qiita

JavaScript の記事で var を変数宣言に使ってあるものは MDN のもの以外はより注意して読まなければいけませんのでご注意を。

投稿2021/01/10 02:11

A_kirisaki

総合スコア2853

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

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

baboo

2021/01/11 02:42

こちらご回答いただきありがとうございます! フレームワークを使わずにどこまでやれるか、と少し意地になっていたのですが、A_kirisakiさんにご回答いただいたタイミングで再考し、Flaskを使ってみることとしました! 質問に対する回答はもちろんのこと、1つ考えるきっかけをありがとうございます! またよろしくお願いいたします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問