やりたいこと
javascriptからajaxでデータを指定したコントローラのアクションに送信し、そこで取得した値を返して処理したい
※コントローラは階層構造になっていて、Controller/Sample/Sample1/indexって感じになっている
環境
cakephp 3.6
jquery 3.1.1
MAMP 5.0.1
できないこと
以下ソースでjavascriptからajaxでコントローラにデータを渡してそれをそのままjavascriptに返しているのですが、403エラーになってしまう
知りたいこと
・コントローラの指定はうまくできているか
(生成されるパスは正しいパスでした)
・ajax通信のコードは合っているか
・cakephpでajaxを使うときは何か設定がいるのか
エラー
ajax通信に失敗しました
review.js:181 XMLHttpRequest : 403
review.js:182 textStatus : error
review.js:183 errorThrown : undefined
ソースコード
Controller/Sample/Sample1.php
1 2<?php 3namespace App\Controller\Sample; 4 5use App\Controller\AppController; 6use Cake\ORM\TableRegistry; 7use Cake\Core\Exception\Exception; 8use Cake\Error\ExceptionRenderer; 9 10/** 11 * Sample1 Controller 12 */ 13class Sample1Controller extends AppController 14{ 15 /** 16 * Initialize method 17 */ 18 public function initialize() 19 { 20 parent::initialize(); 21 $this->viewBuilder()->setLayout('Sample/sample1'); 22 $this->loadComponent('RequestHandler'); 23 } 24 25 /** 26 * Index method 27 */ 28 public function index() 29 { 30 31 //省略 32 33 $this->set(compact('data1')); 34 } 35 36 /** 37 * Loading method 38 * @return $test テストデータ 39 */ 40 public function loading() 41 { 42 $this->autoRender = false; 43 if ($this->request->is('ajax')) { 44 // 送られてきたリクエストデータを取得する 45 $test = $this->request->getData('test'); 46 47 // 必要な処理を実装していく 48 49 // 戻り値を返却する 50 51 echo json_encode($test); 52 } 53 } 54} 55
webroot/js/sample1.js
1 2$("button").on("click",function(){ 3 var test = "test"; 4 execAjax(test); 5}); 6 7function execAjax(test){ 8 $.ajax({ 9 type: "POST", 10 url: "/App/Sample/Sample1/loading", 11 data: { 12 "test" : test, 13 }, 14 }) 15 // Ajaxリクエストが成功した時発動 16 .done(function(response){ 17 alert("成功"); 18 alert(response); 19 }) 20 // Ajaxリクエストが失敗した時発動 21 .fail(function(XMLHttpRequest, textStatus, errorThrown){ 22 alert("失敗"); 23 console.log("ajax通信に失敗しました"); 24 console.log("XMLHttpRequest : " + XMLHttpRequest.status); 25 console.log("textStatus : " + textStatus); 26 console.log("errorThrown : " + errorThrown.message); 27 }); 28}
追記
- cakephpのインストールと設定
参考サイト
https://qiita.com/YoshikiNakamura/items/bcceaaa3d064a08233c1
https://www.ritolab.com/entry/59
回答1件
あなたの回答
tips
プレビュー