質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

1回答

956閲覧

CakePHPのSESSION情報をJavaScriptから記録するには?

gekota

総合スコア8

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2017/11/13 09:05

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}}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

CahePHP3は使ったことはありませんが(CakePHP2x)、
エラー内容詳細がJSONで返ってきてますのでこのままだと読み難いので
一回パースした内容を貼り付けたほうがいいかもしれません

で、一回パースしてみました

JSON

1{ 2 "readyState": 4, 3 "responseJSON": { 4 "code": 400, 5 "file": "C:\xampp\htdocs\cakeapp\vendor\cakephp\cakephp\src\Controller\Component\SecurityComponent.php", 6 "line": 345, 7 "message": "'_Token' was not found in request data.", 8 "url": "/test-ajaxs/test" 9 }, 10 "responseText": "{ 11 "message": "\u0027_Token\u0027 was not found in request data.", 12 "url": "/test-ajaxs/sample", 13 "code": 400, 14 "file": "C:\xampp\htdocs\cakeapp\vendor\cakephp\cakephp\src\Controller\Component\SecurityComponent.php", 15 "line": 345 16}", 17 "status": 400, 18 "statusText": "Bad Request" 19}

SecurityComponent(345行目)というコンポーネントで引っかかっているようです。
「リクエスト内にTokenがありません」という内容でしょうか...。

考えられるのはPOSTでリクエストする際に認証用のトークンが必要なのにそれが無い、と言っている感じがします。
リクエスト内容を再度確認してみてはどうでしょうか?

投稿2017/11/13 10:34

buteneko_san

総合スコア34

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問