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

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

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

GETとはHTTPが対応するリクエストメソッドの一つです。クライアントからサーバーへ送られたURLパラメータのデータを取得する時必要がある時に使われます。

POST

POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

CakePHP

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

JavaScript

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

Q&A

解決済

1回答

4074閲覧

【cakePHP】Form->create()で作成時、method="POST"ではJavaScriptが動作しない?

pecchan

総合スコア555

GET

GETとはHTTPが対応するリクエストメソッドの一つです。クライアントからサーバーへ送られたURLパラメータのデータを取得する時必要がある時に使われます。

POST

POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

CakePHP

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

JavaScript

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

0グッド

0クリップ

投稿2016/03/31 01:16

少しややこしいんですが、ある条件の時だけJavaScriptが動作しません。

条件とは、
cakePHPのForm->create()でフォーム(method="POST"で)作成した時だけなんです。

<form>直書きですと問題なく動作します。

JavaScriptはグループ内のチェックボックスをチェックする動作です。

パターンをまとめると以下になります。

<form method="GET" >もしくは<form method="POST" >を直書きすると両方問題なし。
・cakePHPのForm->create()にて<form method="GET" >を作成。問題なし。
・cakePHPのForm->create()にて<form method="POST" >を作成。スクリプトが動作しない。

デバッグすると、スクリプト内には飛んでいました。

どうしてPOSTの時だけスクリプトが動作しないんでしょうか・・・・?

php

1 //↓は問題なし 2 <form action="/xxx" method="GET" accept-charset="utf-8"> 3 4 //↓も問題なし 5 <?php echo $this->Form->create('xxx', array('controller'=>'yyy', 'action' => 'index', 'type' => 'GET')); ?> 6 7 //↓だと動作しない 8 <?php echo $this->Form->create('xxx', array('controller'=>'yyy', 'action' => 'index', 'type' => 'POST')); ?> 9 10 11 <p><input type="checkbox" onClick="onGroupClick()" name="a" />果物</p> 12 <div> 13 <p><input type="checkbox" value="a"/>りんご</p> 14 <p><input type="checkbox" value="g"/>みかん</p> 15 <p><input type="checkbox" value="b"/>バナナ</p> 16 </div> 17 18 <p><input type="checkbox" onClick="onGroupClick()" name="b"/>野菜</p> 19 20 21 22 <input type="submit" value="送信"/> 23 24 </form> 25

JavaScript

1function onGroupClick() 2{ 3 4 Form = document.getElementsByTagName('form')[0]; 5 P = Form.getElementsByTagName('p'); 6 DIV = Form.getElementsByTagName('div'); 7 8 //全てのpタグ 9 for(i=0;i<P.length;i++) 10 { 11 12 //先頭を取得 13 Pinput = P[i].getElementsByTagName('input')[0]; 14 15 //divで囲まれたグループを取得 16 DIVinput = DIV[i].getElementsByTagName('input'); 17 18 //全て先頭の値に合わせる 19 if(Pinput.checked) 20 { 21 for(k=0;k<DIVinput.length;k++) 22 { 23 DIVinput[k].checked=true; 24 25 } 26 } 27 else 28 { 29 for(k=0;k<DIVinput.length;k++) 30 { 31 DIVinput[k].checked=false; 32 } 33 } 34 } 35 36}

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

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

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

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

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

kei344

2016/03/31 03:39

$this->Form->create で出力されたHTMLも追記してください。
pecchan

2016/03/31 03:57

有難う御座います。おかげで原因が判明しました。
guest

回答1

0

自己解決

key344様
有難う御座います。

$this->Form->create で出力されたHTMLも追記してください。

<div style="display:none;"><input type="hidden" name="_method" value="POST"/></div> 上記のように余計なdivやinputが自動で出力されているためでした。

投稿2016/03/31 03:56

pecchan

総合スコア555

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問