質問編集履歴

1

コードについて

2022/01/28 07:46

投稿

tamo823
tamo823

スコア1

test CHANGED
File without changes
test CHANGED
@@ -8,3 +8,93 @@
8
8
 
9
9
  : や . など文字が入っている際にJavaScript側でエラーを吐いてしまう。
10
10
  恐らく: や . などの文字の前にバックスラッシュでエスケープを行えばエラーは出なくなると思うのですが、if文などが長く続いてしまいそうなため もっといい方法は無いか困っています。
11
+
12
+ ```python
13
+ # 日本語が文字化けしないように、Falseにしておく。
14
+ app.config['JSON_AS_ASCII'] = False
15
+ @app.route('/spec_get')
16
+ def spec_get():
17
+ spec_data = db.game_spec_get()
18
+
19
+ spec_list = []
20
+ for i in range(len(spec_data)):
21
+ # specに辞書型で格納する。
22
+ spec = {
23
+ 'id': spec_data[i][0],
24
+ 'name': spec_data[i][6]
25
+ }
26
+ spec_list.append(spec)
27
+
28
+ # JSONで返す。 
29
+ return jsonify(ResultSet=json.dumps(spec_list))
30
+ ```
31
+
32
+ ```JavaScript
33
+ function game_spec_get() {
34
+
35
+ let list_data = document.getElementById('gTable');
36
+ let child_data = list_data.rows.length;
37
+
38
+ if (child_data <= 1) {
39
+ $(document).ajaxSend(function() {
40
+ $("#overlay").fadeIn(200);
41
+ });
42
+ $.ajax({
43
+ type: 'GET',
44
+ url: '/spec_get',
45
+ data: '',
46
+ contentType: 'json',
47
+ success: function (data) {
48
+ parsed = JSON.parse(data['ResultSet']);
49
+ console.log(data['ResultSet']);
50
+ }
51
+
52
+ }).done(function() {
53
+ setTimeout(function() {
54
+ $("#overlay").fadeOut(0);
55
+ },0);
56
+ let tabObj = document.getElementById('Table');
57
+ for (let i in parsed) {
58
+ // trタグを追加
59
+ let newRow = tabObj.insertRow();
60
+ let newCell = newRow.insertCell();
61
+ let newText = document.createTextNode(parsed[i]['name']);
62
+ newCell.appendChild(newText);
63
+ newRow.classList.add('title_target');
64
+
65
+ newCell = newRow.insertCell();
66
+ newText = document.createTextNode("○");
67
+ newCell.appendChild(newText);
68
+ }
69
+ }
70
+ )}
71
+ }
72
+
73
+ $(function () {
74
+ gameSearchWord = function(){
75
+ let gameSearchText = $(this).val(), // 検索ボックスに入力された値
76
+ gameTargetText;
77
+
78
+ $('.title_target').each(function() {
79
+ gameTargetText = $(this).text();
80
+
81
+ // 検索対象となるリストに入力された文字列が存在するかどうかを判断
82
+ if (gameTargetText.indexOf(gameSearchText) != -1) {
83
+ $(this).removeClass('hidden');
84
+ $('#'+gameTargetText).removeClass('hidden');
85
+ } else {
86
+ $(this).addClass('hidden');
87
+ $('#'+gameTargetText).addClass('hidden');
88
+ }
89
+ });
90
+ };
91
+
92
+ // searchWordの実行
93
+ $('#game_search').on('input', gameSearchWord);
94
+ });
95
+ ```
96
+
97
+ ```エラー
98
+ Uncaught Error: Syntax error, unrecognized expression: #gamename: gamename
99
+ (ここのgamenameはゲーム名に:などが含まれている物です。)
100
+ ```