質問編集履歴

3

本文修正

2020/07/01 05:39

投稿

study_111
study_111

スコア82

test CHANGED
File without changes
test CHANGED
@@ -176,7 +176,7 @@
176
176
 
177
177
  // 前のページへ正しく戻れるようページ歴史に追加する
178
178
 
179
- history.pushState(null, "", "/security_tool/check");
179
+ history.pushState(null, "", "/polls/check");
180
180
 
181
181
 
182
182
 

2

jsファイル追記

2020/07/01 05:39

投稿

study_111
study_111

スコア82

test CHANGED
File without changes
test CHANGED
@@ -97,3 +97,99 @@
97
97
  </html>
98
98
 
99
99
  ```
100
+
101
+ 以下は、app.jsです
102
+
103
+ ```
104
+
105
+
106
+
107
+ function showElement(e) {
108
+
109
+ e.classList.remove("hidden");
110
+
111
+ }
112
+
113
+
114
+
115
+ function hideElement(e) {
116
+
117
+ e.classList.add("hidden");
118
+
119
+ }
120
+
121
+
122
+
123
+ async function sendData() {
124
+
125
+
126
+
127
+ // ローディング画面を表示する
128
+
129
+ showElement(document.getElementById("loading"));
130
+
131
+
132
+
133
+ //formデータを取得
134
+
135
+ let formElem = document.getElementById("form")
136
+
137
+ console.log(formElem)
138
+
139
+ let formUrl = formElem.action;
140
+
141
+ let formData = new FormData(formElem);
142
+
143
+
144
+
145
+ // console.log(formData)
146
+
147
+
148
+
149
+ let response = await fetch(formUrl, {
150
+
151
+ method: 'POST',
152
+
153
+ body: formData
154
+
155
+ });
156
+
157
+
158
+
159
+ // ローディング画面を隠します
160
+
161
+ hideElement(document.getElementById("loading"));
162
+
163
+
164
+
165
+ if(response.ok){
166
+
167
+ //成功の場合の処理
168
+
169
+ // console.log(response)
170
+
171
+ document.open();
172
+
173
+ document.write(await response.text());
174
+
175
+ document.close();
176
+
177
+ // 前のページへ正しく戻れるようページ歴史に追加する
178
+
179
+ history.pushState(null, "", "/security_tool/check");
180
+
181
+
182
+
183
+ }else{
184
+
185
+ //失敗の場合の処理
186
+
187
+
188
+
189
+ }
190
+
191
+
192
+
193
+ }
194
+
195
+ ```

1

コード追記

2020/07/01 05:37

投稿

study_111
study_111

スコア82

test CHANGED
File without changes
test CHANGED
@@ -3,3 +3,97 @@
3
3
  こちらは、javascriptやCSSで作成されるものだと思うのですが、プログラムを読み込んでいる間のみローディング画面を表示するというのはどのようにすれば良いかが分かりません。
4
4
 
5
5
  どなたかご助言頂けましたら幸いです
6
+
7
+
8
+
9
+ ### 追記
10
+
11
+
12
+
13
+ 以下は、index.htmlです
14
+
15
+ ```
16
+
17
+ {% load static %}
18
+
19
+ <!DOCTYPE html>
20
+
21
+ <html lang="ja">
22
+
23
+ <head>
24
+
25
+ <meta charset="UTF-8">
26
+
27
+ <meta http-equiv="X-UA-Compatible" content="ie=edge"/>
28
+
29
+ <link rel="stylesheet" type="text/css" href="{% static 'polls/css/style.css' %}">
30
+
31
+ <title>demo</title>
32
+
33
+ </head>
34
+
35
+ <body>
36
+
37
+ <div class="loader hidden" id="loading">Loading...</div>
38
+
39
+ <form id="form" action="{% url 'polls:check' %}" method="post">
40
+
41
+ {% csrf_token %}
42
+
43
+ <input type="url" name="check_url" placeholder="http://example.com"/>
44
+
45
+ <button type="button" onclick="sendData()">送信</button>
46
+
47
+ </form>
48
+
49
+ <script src="{% static 'polls/js/app.js' %}"></script>
50
+
51
+ </body>
52
+
53
+ </html>
54
+
55
+ ```
56
+
57
+ 以下は、views.pyです
58
+
59
+ ```
60
+
61
+ def check(request):
62
+
63
+ input_url = request.POST['check_url']
64
+
65
+ test_data = {'test':'sssss','test2':'aaaaaaa'}
66
+
67
+ print('ok')
68
+
69
+ return render(request,'polls/check.html',{'test_data': test_data})
70
+
71
+ ```
72
+
73
+ 以下はcheck.htmlです
74
+
75
+ ```
76
+
77
+ <!DOCTYPE html>
78
+
79
+ <html lang="en">
80
+
81
+ <head>
82
+
83
+ <meta charset="UTF-8">
84
+
85
+ <title>Document</title>
86
+
87
+ </head>
88
+
89
+ <body>
90
+
91
+ <p>check.htmlです</p>
92
+
93
+
94
+
95
+ </body>
96
+
97
+ </html>
98
+
99
+ ```