質問編集履歴

1

[追加] PHPとJava scriptのデータの受け渡し方法として非同期通信「Ajax」を使用するとよいとご指摘いただいたので、下記サイトのソースコードを自分の実行環境で動くのか確認することにしまし

2021/12/11 08:02

投稿

Atsku
Atsku

スコア3

test CHANGED
File without changes
test CHANGED
@@ -12,11 +12,25 @@
12
12
 
13
13
 
14
14
 
15
+ [追加]
16
+
17
+ PHPとJava scriptのデータの受け渡し方法として非同期通信「Ajax」を使用するとよいとご指摘いただいたので、下記サイトのソースコードを自分の実行環境で動くのか確認することにしました。
18
+
19
+
20
+
21
+ 参考サイト
22
+
23
+ http://vbnettips.blog.shinobi.jp/javascript/javascript%20jquery%E3%81%A7ajax%E3%82%92%E4%BD%BF%E3%81%84p
24
+
15
25
 
16
26
 
17
27
  ### 発生している問題・エラーメッセージ
18
28
 
29
+ ```
30
+
19
- 上記にも記載したようにPHPからJava scriptへデタを渡すことができない。
31
+ 取得エラ
32
+
33
+ ```
20
34
 
21
35
 
22
36
 
@@ -26,61 +40,123 @@
26
40
 
27
41
 
28
42
 
29
- ```database.php
43
+ ```database.html
44
+
45
+ <html>
46
+
47
+ <head>
48
+
49
+ <meta charset="utf-8">
50
+
51
+ <title>test ajax</title>
52
+
53
+ <script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
54
+
55
+ <script type="text/javascript">
56
+
57
+ //Ajax関数
58
+
59
+ function getData() {
60
+
61
+ // マスタデータの取得
62
+
63
+ $.ajax({
64
+
65
+ type: "POST"
66
+
67
+ , url: "http://localhost/Connect.php"
68
+
69
+ , data: { id: $("#id").val() }
70
+
71
+ }).done(function(res){
72
+
73
+ // ajaxがOK
74
+
75
+ $("#msg").text(JSON.parse(res));
76
+
77
+ }).fail(function() {
78
+
79
+ // 取得エラー
80
+
81
+ alert('取得エラー');
82
+
83
+ }).always(function() {
84
+
85
+ // 後処理(処理することが在れば)
86
+
87
+ });
88
+
89
+ return false;
90
+
91
+ }
92
+
93
+ </script>
94
+
95
+ </head>
96
+
97
+ <body>
98
+
99
+ <h2>test ajax json</h2>
100
+
101
+ ID:<input type="text" id="id" size="10" maxlength="10" /><br />
102
+
103
+ <p id="msg">テストメッセージ</p>
104
+
105
+ <button onclick="getData();">Ajax</button>
106
+
107
+ </body>
108
+
109
+ </html>
110
+
111
+ ```
112
+
113
+
114
+
115
+ ```Connect.php
30
116
 
31
117
  <?php
32
118
 
119
+ // 処理モードの取得
33
120
 
121
+ $id = -1;
34
122
 
35
- $dsn = 'mysql:dbname=データベース名;host=localhost';
123
+ if (isset($_POST["id"]) == true && $_POST["id"] != "") {
36
124
 
37
- $user = 'ユーザ名';
125
+ $id = intval($_POST["id"]);
38
126
 
39
- $password = 'パスワード';
127
+ }
40
128
 
41
- $options=array(
129
+ // マスタ風の仮のデータ
42
130
 
43
-  PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
131
+ $arrData = array(
44
132
 
45
-  PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
133
+ 0 => "@@@@@@"
46
134
 
47
-  PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true,);
135
+ ,1 => "AAAAAA"
48
136
 
49
-
137
+ ,2 => "BBBB"
50
138
 
51
- try{
139
+ ,3 => "CCCCCCCC"
52
140
 
53
- $pdo = new PDO($dsn, $user, $password, $options);
141
+ );
54
142
 
55
-
143
+
56
144
 
57
- $sql = 'select * from data WHERE Damage_Layer = "ひび割れ"';
145
+ $strRet = "";
58
146
 
59
- $res = $pdo->query($sql);
147
+ if (0 <= $id && $id <= 3) {
60
148
 
61
- $data = $res->fetchAll();
149
+ $strRet = $arrData[$id];
62
150
 
63
- print_r($data);
151
+ }
64
152
 
153
+
65
154
 
155
+ // 結果を返す
66
156
 
67
- }catch (PDOException $e){
157
+ echo(json_encode($strRet));
68
-
69
- print('Error:'.$e->getMessage());
70
-
71
- die();
72
-
73
- }
74
-
75
-
76
-
77
- $dbh = null;
78
-
79
- ?>
80
158
 
81
159
  ```
82
-
83
- 上記のソースコードがデータベースから必要なデータを取り出してくるphpファイルになります。
84
160
 
85
161
 
86
162
 
@@ -88,7 +164,7 @@
88
164
 
89
165
 
90
166
 
91
- ajax,Fetch API などの非同期通信を調べて試してみましたが駄目でした
167
+
92
168
 
93
169
 
94
170
 
@@ -96,6 +172,8 @@
96
172
 
97
173
 
98
174
 
99
- 実行環境 サーバ:XAMPPのapache
175
+ 実行環境 XAMPP x3.3.0
100
176
 
101
- タベース:XAMPPのMariaDB
177
+ htmlファイルはtomcatサ
178
+
179
+     PHPファイルはapacheサーバ上に配置