回答編集履歴

3

ミニマム確認コード

2019/04/12 03:49

投稿

m.ts10806
m.ts10806

スコア80888

answer CHANGED
@@ -39,4 +39,72 @@
39
39
  }catch(mysqli_sql_exception $e){
40
40
  echo json_encode( $e );
41
41
  }
42
- ```
42
+ ```
43
+
44
+
45
+ # ミニマムコード
46
+
47
+ 画面側
48
+ ```html
49
+ <button type="button" class="deleteBtn" data-id="1">1削除</button>
50
+ <button type="button" class="deleteBtn" data-id="2">2削除</button>
51
+ <button type="button" class="deleteBtn" data-id="3">3削除</button>
52
+ <button type="button" class="deleteBtn" data-id="4">4削除</button>
53
+ <script
54
+ src="https://code.jquery.com/jquery-3.3.1.min.js"
55
+ integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8="
56
+ crossorigin="anonymous"></script>
57
+ <script>
58
+ $(".deleteBtn").on('click',function(){
59
+ console.log($(this).data('id'));
60
+ $.ajax({
61
+ type: 'POST',
62
+ dataType:'json',
63
+ url:'a.php',
64
+ data:{
65
+ btnid:$(this).data('id'),
66
+ },
67
+ success:function(data) {
68
+ console.log('success');
69
+ console.log(data);
70
+ },
71
+ error:function(XMLHttpRequest, textStatus, errorThrown) {
72
+ console.log(XMLHttpRequest);
73
+ console.log(textStatus);
74
+ console.log(errorThrown);
75
+ }
76
+ });
77
+ });
78
+ </script>
79
+ ```
80
+
81
+ ajaxで呼び出される側
82
+ ```php
83
+ <?php
84
+ echo json_encode( $_POST['btnid'] );
85
+ ```
86
+
87
+ console.log結果:
88
+ ```
89
+ 1
90
+ success
91
+ 1
92
+ 2
93
+ success
94
+ 2
95
+ 3
96
+ success
97
+ 3
98
+ ```
99
+
100
+ ※ちなみにheader()つけても同じでした
101
+ ```php
102
+ <?php
103
+ header('Content-type: application/json');
104
+ echo json_encode( $_POST['btnid'] );
105
+ ```
106
+
107
+ ちなみに存在しないphp、URLをurlに指定した場合は下記のようなエラーが出た
108
+ `SyntaxError: Unexpected token s in JSON at position 0`
109
+
110
+ URL間違ってるかも?

2

修正

2019/04/12 03:49

投稿

m.ts10806
m.ts10806

スコア80888

answer CHANGED
@@ -13,7 +13,7 @@
13
13
  - [モダンPHPアンチパターン#ファイルの最後に?>を書く](https://qiita.com/tadsan/items/157969b338fd8b782b21)
14
14
  > 不要な?>を書いてはいけない理由は明確で、<?php … ?>の外にあるコードは出力されてしまうからだ。つまり、誰かが?>の直後に余分な改行を入れてしまったら、わかりにくいタイミングで意図しない改行が**出力されることになる**。
15
15
 
16
- 試してみてほしいこと2
16
+ 試してみてほしいこと2(※根本的な解決方法ではありません)
17
17
  ```php
18
18
  <?php
19
19
  ob_start(); //追加
@@ -27,7 +27,7 @@
27
27
  echo json_encode( $jsondata );
28
28
  ```
29
29
 
30
- 試してみてほしいこと3
30
+ 試してみてほしいこと3(※データベースに影響を及ぼす処理にはtry-catchは必須です)
31
31
  ```php
32
32
  try{
33
33
  require_once "db.php";

1

追記

2019/04/12 00:07

投稿

m.ts10806
m.ts10806

スコア80888

answer CHANGED
@@ -11,4 +11,32 @@
11
11
 
12
12
  あと、後に何も出力がないのでしたら?>は不要です。
13
13
  - [モダンPHPアンチパターン#ファイルの最後に?>を書く](https://qiita.com/tadsan/items/157969b338fd8b782b21)
14
- > 不要な?>を書いてはいけない理由は明確で、<?php … ?>の外にあるコードは出力されてしまうからだ。つまり、誰かが?>の直後に余分な改行を入れてしまったら、わかりにくいタイミングで意図しない改行が**出力されることになる**。
14
+ > 不要な?>を書いてはいけない理由は明確で、<?php … ?>の外にあるコードは出力されてしまうからだ。つまり、誰かが?>の直後に余分な改行を入れてしまったら、わかりにくいタイミングで意図しない改行が**出力されることになる**。
15
+
16
+ 試してみてほしいこと2
17
+ ```php
18
+ <?php
19
+ ob_start(); //追加
20
+
21
+ require_once "db.php";
22
+
23
+ $jsondata = $_POST['btnid'];
24
+ $resultcontents = mysqli_query($mysqli,"delete from userdata where id = '".$jsondata."'");
25
+ ob_end_clean(); //追加
26
+ header('Content-type: application/json');
27
+ echo json_encode( $jsondata );
28
+ ```
29
+
30
+ 試してみてほしいこと3
31
+ ```php
32
+ try{
33
+ require_once "db.php";
34
+
35
+ $jsondata = $_POST['btnid'];
36
+ $resultcontents = mysqli_query($mysqli,"delete from userdata where id = '".$jsondata."'");
37
+ header('Content-type: application/json');
38
+ echo json_encode( $jsondata );
39
+ }catch(mysqli_sql_exception $e){
40
+ echo json_encode( $e );
41
+ }
42
+ ```