teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

6

エラー文言追加

2020/06/03 08:39

投稿

mittchy
mittchy

スコア7

title CHANGED
File without changes
body CHANGED
@@ -48,7 +48,7 @@
48
48
  ###補足
49
49
  script内の記述を変更した所403エラーは無くなったのですが、失敗が返ってきてしまいfailメソッドに行ってしまいます。
50
50
  デバッガーを使用して確認するとサーバーへのアクセスは出来ているようです。
51
-
51
+ 追記:エラー内容はerror :SyntaxError: Unexpected end of JSON inputになっています。
52
52
  ```
53
53
  <script>
54
54
  const csrfToken = '<?= $this->getRequest()->getParam('_csrfToken') ?>';

5

タグ追加

2020/06/03 08:39

投稿

mittchy
mittchy

スコア7

title CHANGED
File without changes
body CHANGED
File without changes

4

タグ追加

2020/06/03 08:34

投稿

mittchy
mittchy

スコア7

title CHANGED
File without changes
body CHANGED
File without changes

3

タイトル変更

2020/06/03 08:34

投稿

mittchy
mittchy

スコア7

title CHANGED
@@ -1,1 +1,1 @@
1
- CakePHP3でajaxを用いAPI作成
1
+ cakephp3系でajax通信いけどエラーで失敗してしまう
body CHANGED
@@ -46,7 +46,7 @@
46
46
  </script>
47
47
  ```
48
48
  ###補足
49
- script内の記述を変更した所403エラーは無くなったのですが、errorが返ってきます。
49
+ script内の記述を変更した所403エラーは無くなったのですが、失敗が返ってきてしいfailメソッドに行ってしまいます。
50
50
  デバッガーを使用して確認するとサーバーへのアクセスは出来ているようです。
51
51
 
52
52
  ```

2

サーバー側へはアクセスが出来ているようです。

2020/06/03 08:24

投稿

mittchy
mittchy

スコア7

title CHANGED
File without changes
body CHANGED
@@ -47,6 +47,8 @@
47
47
  ```
48
48
  ###補足
49
49
  script内の記述を変更した所403エラーは無くなったのですが、errorが返ってきます。
50
+ デバッガーを使用して確認するとサーバーへのアクセスは出来ているようです。
51
+
50
52
  ```
51
53
  <script>
52
54
  const csrfToken = '<?= $this->getRequest()->getParam('_csrfToken') ?>';

1

403エラーは消えました

2020/06/03 07:58

投稿

mittchy
mittchy

スコア7

title CHANGED
File without changes
body CHANGED
@@ -11,10 +11,13 @@
11
11
  ```ProductsController
12
12
  public function api()
13
13
  {
14
+ $this->autoRender = false;
15
+ if($this->getRequest()->is('ajax')) {
14
- $product_id = $this->getRequest()->getData('id');
16
+ $product_id = $this->getRequest()->getData('id');
15
- $products = $this->Products->find()->where(['id IN' => $product_id])->all();
17
+ $products = $this->Products->find()->where(['id IN' => $product_id])->all();
16
- $this->set(compact('products'));
18
+ $this->set(compact('products'));
17
- $this->set('_serialize', 'products');
19
+ $this->set('_serialize', 'products');
20
+ }
18
21
  }
19
22
  ```
20
23
 
@@ -41,4 +44,29 @@
41
44
  //通信失敗!
42
45
  });
43
46
  </script>
47
+ ```
48
+ ###補足
49
+ script内の記述を変更した所403エラーは無くなったのですが、errorが返ってきます。
50
+ ```
51
+ <script>
52
+ const csrfToken = '<?= $this->getRequest()->getParam('_csrfToken') ?>';
53
+ var id = [];
54
+ id = <?= $product_id ?>;
55
+ $.ajax({
56
+ url: "/products/api",
57
+ type: "POST",
58
+ cache: false,
59
+ data: {'id': id},
60
+ dataType: 'json',
61
+ headers: {
62
+ 'X-CSRF-Token': csrfToken
63
+ }
64
+ }).done(function (data, textStatus, jqXHR) {
65
+ //通信成功!
66
+ alert("success");
67
+ }).fail(function (jqXHR, textStatus, errorThrown) {
68
+ //通信失敗!
69
+ alert("error");
70
+ });
71
+ </script>
44
72
  ```