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

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

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

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

JavaScript

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

0回答

522閲覧

参照ファイルが更新されない python3,ローカルサーバーにて

yamatail

総合スコア77

Python 3.x

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

JavaScript

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

1クリップ

投稿2020/05/07 12:08

編集2022/01/12 10:55

windows10 上でpython3でローカルサーバーを立ち上げ、テストを行っています。
cgiをpythonで書いています。

トップページ①にあるボタンを押すと次ページ②で表に入力できる。という感じの動作です。

分からないのは、①から②に移るとsamplelist.jsが読み込まれるのですが、
そのファイルがどうも更新されません。


<追加で分かったこと>
トップページindex.htmlも更新されませんでした。
これは、python3でローカルサーバーを立ち上げる時に
python -m http.server 8000 --cgi
ちゃんとファイルが読み込まれていないのが原因なんでしょうか。
その場合どこに注意すればよいでしょうか??


以下、エラーの流れ

サーバー立ち上げる(python -m http.server 8000 --cgi)

①をブラウザで開く

①のボタンクリックする

②が開く(よしよしうまく表示できた)

②のボタンクリックする。
(うまくいかないのでsamplelist.jsを見直してみよう!)

samplelist.jsをvisual stadio Codeで編集&セーブ

もう一度、①を開く

①のボタンクリックする

②が開く

②のボタンクリックする。
(あれ?うまくいかないな???)

F12で確認...
編集したのに変わってない!!?

という感じなのです。

ファイル構成がそもそも悪いのか
参照パスがうまくいってないのか

お分かりの方いらっしゃいましたら、アドバイスいただけませんでしょうか。

ファイルの構成は以下です。(この構成でいいのか全くわかりません。。。)

txt

1websrv 2|- index.html #topページ 3| 4|- cgi-bin 5|  |- sample.py #topページに埋め込まれているcgi 6| 7|- modules #sample.pyに埋め込まれているjavascriptのモジュール 8|  |-js 9|  | |- [javascriptファイル](jquery,handsontable,etc) 10|  | 11|  |-css 12|    |- [cssファイル](jquery,handsontable,etc) 13| 14|- jsfile ♯sample.pyに埋め込まれているjavascript(自作) 15   |- samplelist.js 16   |- json 17      |- data.json

以下、
トップページindex.html
cgisample.py
②に埋め込まれるjavascriptsamplelist.js
のコードです。

html

1<!DOCTYPE html> 2<html> 3<body> 4<meta charset="UTF-8"> 5<div id="main"> 6<!---------------------------------------------------------> 7 8<div id="invisible"> 9<!---------------------------------------------------------> 10<div class="bar">Testフォーム</div> 11 12<form name="myForm" method="post" action="cgi-bin/sample.py"> 13<br> 14<div align="center"> 15<input type="submit" value="入力内容の確認"> 16</div> 17</form> 18 19 20</div><!-- makeup 終わり --> 21</div><!-- main 終わり --> 22</body> 23</html>

python

1# -*- coding: utf-8 -*- 2""" 3Created on Tue Feb 19 16:33:29 2019 4 5@author: user 6""" 7 8import sys 9sys.stdout.reconfigure(encoding='utf-8') 10 11def input_samplelist(): 12 """ --- ヒアドキュメント --- """ 13 import textwrap 14 string = textwrap.dedent(''' 15 Content-type: text/html; charset=utf-8 16 17 <html> 18 <head> 19 20 <meta charset="utf-8"> 21 <title>Handsontable Test</title> 22 <link rel="stylesheet" href="../modules/css/handsontable.full.min.css"> 23 <script type="text/javascript" src="../modules/js/jquery.min.js"></script> 24 <script type="text/javascript" src="../modules/js/handsontable.full.min.js"></script> 25 <script type="text/javascript" src="../modules/js/jquery.handsontable.csv.js"></script> 26 <script type="text/javascript" src="../jsfile/samplelist.js"></script> 27 </head> 28 <body> 29 <div id="sample_list" class="handsontable"></div> 30 <br> 31 <input type="button" value="サンプル登録"/> 32 </body> 33 </html> 34 ''').strip() 35 print(string) 36 37""" --- メインシーケンス ---""" 38def main(): 39 input_samplelist() 40 41main()

javascript

1$(document).ready(function () { 2 3 // 知らない人は「jquery.Deferred」で調べよう 4 var d = new $.Deferred(); 5 6 var header; 7 var jsondata; 8 9 // (1) JSONファイルを読み込む 10 $.getJSON("./jsfile/json/data.json", function(sample) { 11 jsondata = sample.samplelist; 12 13 // Handsontableで表示するヘッダーをjsonから取得して配列に格納 14 // この辺ダサイんだけど、JSONデータ内の属性を一括で取得する方法とかないかな? 15 header = new Array(); 16 var count = 0; 17 for(key in jsondata[0]){ 18 header[count] = key; 19 count++; 20 } 21 22 d.resolve(); 23 }); 24 25 d.promise().then(function() { 26 // (2) JSONをHandsontableに渡して表示 27 var data = 28 jsondata, 29 container = document.getElementById('sample_list'), //後ほど表を展開する要素を指定 30 hot; 31 32 // 表の定義 33 hot = new Handsontable(container, { //以下はデータ指定と表示オプション 34 data: data, //さっき作ったdataを指定 35 minSpareRows: 1, //表の一番下にいくつ空行を表示するか。今回は1行を空行にして表示する。 36 colHeaders: header, //カラムの名前を表示するかどうか colheader: true 表示/false 非表示 37 //カラムの名前を任意の名前にする colheader: 配列(カラム名) 38 rowHeaders: true, //ロウの名前を表示するか 39 contextMenu: true, //セルを右クリックしたときのメニューをすべて表示 40 columnSorting: true, //カラムのヘッダーをクリックした際に昇順、再クリックで降順にソート 41 licenseKey:'non-commercial-and-evaluation' 42 }); 43 44 // 表上で以下のキーが押されても編集モードにならない 45 // 変換(28)、無変換(29)、カタカナ(241)、ひらがな(242)、漢字キー(243, 244) 46 hot.updateSettings({ 47 beforeKeyDown: function(e){ 48 if([28, 29, 241, 242, 243, 244].indexOf(e.keyCode) >= 0) { 49 e.isImmediatePropagationEnabled = false; 50 e.isImmediatePropagationStopped = function(){ 51 return true; 52 } 53 } 54 } 55 }); 56 57 // (3) 表の内容をCSV用のテキストにする 58 $("input:button").click(function(){ 59 // 表の状態を文字列にする。 60 var rows = 0 61 rows = hot.countRows(); 62 console.log(rows); 63 for(let i = 0; i < rows; i++){ 64 console.log(i); 65 var csv_string = hot.getDataAtRow(i); 66 console.log(csv_string) 67 }; 68 }); 69 }); 70 71 // Handsontableのおまじない 72 // 以下は基本的にいじらない 73 function bindDumpButton() { 74 75 Handsontable.Dom.addEvent(document.body, 'click', function (e) { 76 77 var element = e.target || e.srcElement; 78 79 if (element.nodeName == "BUTTON" && element.name == 'dump') { 80 var name = element.getAttribute('data-dump'); 81 var instance = element.getAttribute('data-instance'); 82 var hot = window[instance]; 83 console.log('data of ' + name, hot.getData()); 84 } 85 }); 86 } 87 bindDumpButton(); //関数実行 88 });

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問