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

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

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

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

JavaScript

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

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

2回答

396閲覧

ajaxでformを作っているが値がNoticeになってしまう。

MeB

総合スコア104

PHP

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

JavaScript

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

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2018/08/01 02:49

編集2018/08/01 03:11

前提・実現したいこと

formでチェックされた(radioボタン)値をajaxを使ってphpに送る。
phpで受け取った値を見て配列と比較しヒットしたものを表示
(ヒットした場合は全て表示させる 例:["color"=>"red","type"=>"a"]という配列があってcolorの赤がチェックされて入ればcolorとtypeどちらも表示させる)
と、したいのですがまずformの値がうまく受け取れず進んでいません。

発生している問題・エラーメッセージ

//index.html Notice: Undefined index: color in ...

該当のソースコード

html

1// index.html 2<form id="form" name="search" action="" method="POST"> 3 <input type="radio" id="color01" name="color" value="red"><label for="color01"></label> 4 <input type="radio" id="color02" name="color" value="blue"><label for="color02"></label> 5 <button class="submit" value="検索">検索</button> 6</form>

js

1$(function () { 2 $.ajax({ 3 url: 'ajax.php', 4 type: "POST", 5 dataType: "html", 6 success: function(data){ 7 var html = ''; 8 $('.result').html('aaa'); 9 $('button').on('click',function(event){ 10 event.preventDefault(); 11 12 $('.result').html(data); 13 }); 14 } 15 }); 16});

php

1<?php 2$data = [ 3 "test"=>[ 4 [ 5 "color"=>"red", 6 "type"=>"a" 7 ], 8 [ 9 "color"=>"red", 10 "type"=>"b" 11 ], 12 [ 13 "color"=>"blue", 14 "type"=>"c" 15 ] 16 ] 17]; 18$color = filter_input( INPUT_POST, "color" ); 19?> 20<p><?php echo $color; ?></p> 21<p><?php echo 'ajax' ?></p>

試したこと

上記のコードでNoticeが出てしまいます。

<p><?php echo 'ajax' ?></p>

こちらの方が正常に"ajax"というテキストが表示されています。

ご教示のほど宜しくお願いします。

追記
一部修正しました。

また、

php

1$color = filter_input( INPUT_POST, "color" ); 2// を書きにしたところ正常にtestと表示されました。 3$color = 'test';

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2018/08/01 03:07

dataType: "html" っていう指定はどこかに文献がありますか?
MeB

2018/08/01 03:09

phpでhtmlを組んでそれjsに渡そうと思っているのでdataType: "html"にしているのですが、間違いでしょうか?
退会済みユーザー

退会済みユーザー

2018/08/01 03:12

さくっとネット検索しても、そのような文献がありませんでしたので、どこかに「dataType: "html"を書くべき」という記述があったのかと。
退会済みユーザー

退会済みユーザー

2018/08/01 03:42 編集

m6u レスポンスの content-type が text/html なら html か text よ、公式の記述を見る限り DomNode に変換しているらしいですが → "html": Returns HTML as plain text; included script tags are evaluated when inserted in the DOM.
guest

回答2

0

ベストアンサー

$.ajaxでdataを指定してないからでしょう

sample

postが前提であればデータ渡しはformdataがよいでしょう

javascript

1<script> 2$(function () { 3 $('#form').on('submit',function(e){ 4 var fd = new FormData($('#form').get(0)); 5 e.preventDefault(); 6 $.ajax({ 7 "url": 'ajax.php', 8 "type": "POST", 9 "dataType": "html", 10 "data":fd, 11 "cache":false, 12 "processData": false, 13 "contentType": false, 14 }).done(function(data){ 15 console.log(data); 16 }); 17 }); 18}); 19</script> 20 21<form id="form" name="search" action="" method="POST"> 22 <input type="radio" id="color01" name="color" value="red" checked><label for="color01"></label> 23 <input type="radio" id="color02" name="color" value="blue"><label for="color02"></label> 24 <button class="submit" value="検索">検索</button> 25</form>

一応サブミットしたときにバックグラウンドで処理してあります

投稿2018/08/01 03:11

編集2018/08/01 03:31
yambejp

総合スコア114843

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

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

MeB

2018/08/01 03:17

ご回答ありがとうございます。 確かに指定していませんでした…。 上記のようにformを使用する際はserialize()を使用するでよいのでしょうか? 追加の質問で申し訳ございません。
yambejp

2018/08/01 03:32

sample追記しました。formdataをおすすめします
MeB

2018/08/01 03:37

いつもありがとうございます。 試して見ます。
MeB

2018/08/01 03:50

formdataすごい便利でした!うまくとることができました。ありがとうございます!
guest

0

$.ajaxでの、dataType: "html" っていう指定は不要。あっても邪魔にはならないけど。
$.ajaxでの、data がそもそもないので何もPOSTデータ送信していない。

テックノート – 【jQuery + Ajax】AjaxでPOST送信する方法
この記事の例では、json形式で送りたいから、
dataType: "json" を書いているのであって、
jsonでもjsonpでもなければそもそも指定しなければよいのです。

jQuery.ajax(options) - jQuery 日本語リファレンス

投稿2018/08/01 03:15

編集2018/08/01 03:17
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

MeB

2018/08/01 03:22

ご回答ありがとうございます。 記述しないという選択肢を考えていませんでした。 $.ajaxでの、dataですがphpで全て組んだ後にjs側に返してjsではただ特定のclass名の部分に表示させるだけの処理にしようとしているのですが、このような場合dataは教えていただいたサイトにあるように {parameter1 : param1, parameter2 : param2 } などと指定をしなければいけないものなのでしょうか?
MeB

2018/08/01 03:37

すみません。 変なことを聞いていたみたいです。 {parameter1 : param1, parameter2 : param2 } こちらの形で大丈夫そうでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問