回答編集履歴
1
追記
test
CHANGED
@@ -8,11 +8,29 @@
|
|
8
8
|
|
9
9
|
|
10
10
|
|
11
|
+
追記
|
12
|
+
|
13
|
+
送信を「同期」にするとruby側が応答しないので。
|
14
|
+
|
15
|
+
Javascript側で対応
|
16
|
+
|
17
|
+
|
18
|
+
|
11
19
|
```javascript
|
12
20
|
|
13
21
|
// クリックしたときの処理
|
14
22
|
|
23
|
+
var send_winorlose = false;
|
24
|
+
|
25
|
+
var XHR;
|
26
|
+
|
15
27
|
function winorlose_click(el){
|
28
|
+
|
29
|
+
if(send_winorlose) return; // 送信中は実行できない
|
30
|
+
|
31
|
+
send_winorlose = true; // 処理中とする
|
32
|
+
|
33
|
+
|
16
34
|
|
17
35
|
// el にはどこでクリックされたかの情報が入っている
|
18
36
|
|
@@ -100,28 +118,36 @@
|
|
100
118
|
|
101
119
|
|
102
120
|
|
103
|
-
//※ データの送信は処理の最後
|
121
|
+
//※ データの送信は処理の最後
|
104
122
|
|
105
|
-
//あとこの場合constではなくletを使いましょう。
|
106
|
-
|
107
|
-
//constはシステム的に定数となるときに使います。グローバル関数で指定しておくなら良いですが
|
108
|
-
|
109
|
-
// この関数内で数回指定するのであれば「let」または「var」を使いましょう。
|
110
|
-
|
111
|
-
//
|
123
|
+
//※ 非同期でも結果が返ってくるまでクリックを無視するように変更
|
112
124
|
|
113
125
|
let resultId = el.target.getAttribute("data-id");
|
114
126
|
|
115
|
-
|
127
|
+
if(!XHR){
|
116
128
|
|
117
|
-
XHR
|
129
|
+
XHR = new XMLHttpRequest();
|
118
130
|
|
119
|
-
XHR.responseType = "json";
|
131
|
+
XHR.responseType = "json";
|
132
|
+
|
133
|
+
XHR.onload = function() {
|
134
|
+
|
135
|
+
send_winorlose = false; // 送信完了
|
136
|
+
|
137
|
+
};
|
138
|
+
|
139
|
+
XHR.onerror = function() {
|
140
|
+
|
141
|
+
send_winorlose = false; // 送信完了
|
142
|
+
|
143
|
+
};
|
144
|
+
|
145
|
+
}
|
146
|
+
|
147
|
+
XHR.open("GET", `/results/${resultId}`, true);
|
120
148
|
|
121
149
|
XHR.send();
|
122
150
|
|
123
151
|
}
|
124
152
|
|
125
|
-
|
126
|
-
|
127
153
|
```
|