CakePHP3で作成し登録ページで、A画面(登録用)とB画面(データ検索用)があります。
A画面からB画面を別ウィンドウで開き、TABLEタグの選択行のデータをA画面に貼り付けて、登録を行いたいです。
JavaScriptでB→A画面への貼り付けは実現できました。
しかし、ID情報も登録したいため、B画面の操作でSESSIONに登録したいと考えています。
色々調べてみましたが、CakePHPのSESSION情報にJavaScriptからの追加登録するのは困難なため、JavaScriptを使って、B画面からPOST処理を行い、B画面のコントローラでPOSTのリクエストが来たら、CakePHPのSESSIONにJavascriptの値を記録したいと思っています。
jQueryを使って、POST処理をすると、クロームのコンソールでは[POST http://xxxxx 400 (Bad Request)]というエラーになります。
どの様にすれば、Javascriptの値をCakePHPのSESSIONに登録出来ますでしょうか?
エラー内容詳細
{"readyState":4,"responseText":"{\n \"message\": \"\u0027_Token\u0027 was not found in request data.\",\n \"url\": \"\/test-ajaxs\/sample\",\n \"code\": 400,\n \"file\": \"C:\\xampp\\htdocs\\cakeapp\\vendor\\cakephp\\cakephp\\src\\Controller\\Component\\SecurityComponent.php\",\n \"line\": 345\n}","responseJSON":{"message":"'_Token' was not found in request data.","url":"/test-ajaxs/test","code":400,"file":"C:\xampp\htdocs\cakeapp\vendor\cakephp\cakephp\src\Controller\Component\SecurityComponent.php","line":345},"status":400,"statusText":"Bad Request"}
js
1// jquery.js 2+function($) { 3 4var my_no; 5 6$.exTableTrClick = function(){ 7 8$("#mySubmit").on("click",function(){ 9my_no = '123456'; 10var url = './test-ajaxs/sample'; 11var JSONdata = {message: my_no}; 12 13alert(JSON.stringify(JSONdata)); 14 $.ajax({ 15 type : 'post', 16 url : url, 17 data : JSON.stringify(JSONdata), 18 contentType: 'application/JSON', 19 dataType : 'JSON', 20 scriptCharset: 'utf-8', 21 success : function(data) { 22 // Success 23 alert("success"); 24 alert(JSON.stringify(data)); 25 $("#response").html(JSON.stringify(data)); 26 }, 27 error : function(data) { 28 // Error 29 alert("error"); 30 alert(JSON.stringify(data)); 31 $("#response").html(JSON.stringify(data)); 32 } 33 }); 34}} 35// TABLEタグから抽出するコードは割愛しています。 36// var my_no に選択した情報がセットされると仮定します。 37}(jQuery);
php
1// TestAjaxsController.php 2<?php 3namespace App\Controller; 4use App\Controller\AppController; 5use Cake\Network\Exception\ForbiddenException; 6 7class TestAjaxsController extends AppController 8{ 9 public function index() { 10 if ($this->request->is('post')) { 11 $postdata = $this->request->getData(); 12 $session = $this->request->session(); 13 $session->write([ 14 'Menber.id' => $postdata->my_no]); 15 } 16}}
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。