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

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

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

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

jQuery

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

HTML

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

Q&A

1回答

514閲覧

.serialize()関数がうまく動きません

mashumaro0628

総合スコア19

JavaScript

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

jQuery

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

HTML

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

0グッド

1クリップ

投稿2017/12/11 04:27

編集2017/12/11 05:30

###前提・実現したいこと
このようなソースを実行するとalertで表示されるのは指定form のpostした値ではなく
なぜかページのソースが表示されます。

なにか似た症状に心当たりはありませんでしょうか。

ありましたら教えていただきたいです。

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

エラーメッセージ

###該当のソースコード

<?php $alp_array=array("A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"); /////////セッション////////// //テーブル保存用 if(isset($_SESSION['table'])){ }else{ $_SESSION['table']=null; } //ドロップダウンリスト保存用 if(isset($_SESSION['select'])){ }else{ $_SESSION['select']=null; } //花名保存用 if(isset($_SESSION['f_name'])){ }else{ $_SESSION['f_name']=null; } //花名保存用 if(isset($_SESSION['f_catename'])){ }else{ $_SESSION['f_catename']=null; } //セッション削除 if(isset($_POST['destroy'])){ session_destroy(); } ////////データベース//////// //PDO接続 $pdo = new PDO("mysql:dbname=flower_shop;host=localhost","root","admin"); //商品マスタ表示 $stmt1 = $pdo->query("select p_masta.P_code,p_masta.P_categorycode,p_codes.p_name,p_masta.p_catename from p_masta LEFT OUTER JOIN p_codes on p_masta.P_code = p_codes.P_code"); $_SESSION['table'].='<table border="1">'; $_SESSION['table'].="<tr><td>商品コード</td><td>商品種類</td><td>商品</td></tr>"; $_SESSION['table'].="</tr>"; foreach ($stmt1 as $key) { $_SESSION['table'].="<tr>"; $_SESSION['table'].="<td>".$key['P_code'].$key['P_categorycode']."</td>"; $_SESSION['table'].="<td>".$key['p_name']."</td>"; $_SESSION['table'].="<td>".$key['p_catename']."</td>"; $_SESSION['table'].="</tr>"; } $_SESSION['table'].='</table>'; //商品名のみ追加→商品コード割り振り if(isset($_POST['flower_name'])){ $stmt2 = $pdo->query("select P_code from p_code ORDER BY P_code"); $new_Pcode=array(); //新しい商品コード、生成、取り扱い用配列 foreach ($stmt2 as $key) { if($key['P_code']==null){ $new_Pcode = str_split($key['P_code-1']); } } } ?> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <script type="text/javascript" src="js/jquery-3.2.1.min.js"></script> <link rel="stylesheet" type="text/css" href="css/style.css"> <script type="text/javascript"> $(function(){ $('#add_product_inp').click(function(){ $('#add_cateproduct_div').css('display','none'); $('#add_product_div').css('display','block'); //td_val=$(this).text(); //$('#selected_fname').val([td_val]); //$('#selected_form').submit(); }); $('#add_cateproduct_inp').click(function(){ $('#add_product_div').css('display','none'); $('#add_cateproduct_div').css('display','block'); //td_val=$(this).text(); //$('#selected_fname').val([td_val]); //$('#selected_form').submit(); }); $('#cate_serch_inp').keyup(function() { $.post( "masta_add.php", $(this).serialize(), function(response){ alert(response); }); return false; });

});

</script> </head> <body> <div id="main"> <input type="radio" name="div_change" id="add_product_inp"><a>商品の追加</a> <div id="add_product_div"> <form id="add_product_frm" action="masta_add.php" method="post"> <input name="cate_serch_inp" id="cate_serch_inp" type="text" placeholder="商品の種類を選択" autocomplete="off" required><br> <input name="" placeholder="商品を追加" autocomplete="off" required><input id="submit" type="submit" value="追加"> </form> </div> <br> <input type="radio" name="div_change" id="add_cateproduct_inp"><a>商品の種類追加</a> <div id="add_cateproduct_div"> <form action="masta_add.php" method="post"> <input type="text" placeholder="商品の種類を追加" autocomplete="off" required><input type="submit" value="追加"> </form> </div> <hr> <h1>取り扱い商品一覧</h1> <div id="table"> <?php echo $_SESSION['table'];?> </div> <div id="serch"> <form method="post" action="masta_add.php"> <h4>取り扱い商品検索</h4> <input type="checkbox" name="chk" id="chk"><a>商品名のみ検索</a><br> <input type="checkbox" name="chk" id="chk"><a>職行</a><br> <input type="text" placeholder="商品名" autocomplete="off" required> <input placeholder="商品コード" autocomplete="off" required> <input type="submit" name="" value="検索"> </form> </div> </div> </body> </html> ###試したこと 課題に対してアプローチしたことを記載してください

###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報

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

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

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

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

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

Lhankor_Mhy

2017/12/11 04:52

『ページのソース』とは具体的には何ですか? ご提示のソースコードですか? postsample.php のソースですか? postsample.php の出力ですか?
guest

回答1

0

ページのソースが表示されます。

サーバー側にphpが動く環境はととのっているのでしょうか?
単にphpが動かない環境でテストしたように見受けられます
ajaxではなく普通にpostした場合もソースが表示されるか確認してみてください

sample

formdataを使ったsampleです

javascript

1$(function(){ 2 $("#form1").on('submit',function(e){ 3 var fd=new FormData($(this).get(0)); 4 $.ajax({ 5 "url":"postsample.php", 6 "data":fd, 7 "type":"post", 8 "processData": false, 9 "contentType": false, 10 }).done(function(response){ 11 alert(response); 12 } ); 13 e.preventDefault(); 14 }); 15}); 16

投稿2017/12/11 04:48

編集2017/12/11 04:56
yambejp

総合スコア114769

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

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

mashumaro0628

2017/12/11 05:03

アパッチでテストしています。 postは普通にできます。
yambejp

2017/12/11 05:07

追記で例示したsampleでも同じようにソースが表記されますか?
mashumaro0628

2017/12/11 05:18

<?php $alp_array=array("A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"); /////////セッション////////// //テーブル保存用 if(isset($_SESSION['table'])){ }else{ $_SESSION['table']=null; } //ドロップダウンリスト保存用 if(isset($_SESSION['select'])){ }else{ $_SESSION['select']=null; } //花名保存用 if(isset($_SESSION['f_name'])){ }else{ $_SESSION['f_name']=null; } //花名保存用 if(isset($_SESSION['f_catename'])){ }else{ $_SESSION['f_catename']=null; } //セッション削除 if(isset($_POST['destroy'])){ session_destroy(); } ////////データベース//////// //PDO接続 $pdo = new PDO("mysql:dbname=flower_shop;host=localhost","root","admin"); //商品マスタ表示 $stmt1 = $pdo->query("select p_masta.P_code,p_masta.P_categorycode,p_codes.p_name,p_masta.p_catename from p_masta LEFT OUTER JOIN p_codes on p_masta.P_code = p_codes.P_code"); $_SESSION['table'].='<table border="1">'; $_SESSION['table'].="<tr><td>商品コード</td><td>商品種類</td><td>商品</td></tr>"; $_SESSION['table'].="</tr>"; foreach ($stmt1 as $key) { $_SESSION['table'].="<tr>"; $_SESSION['table'].="<td>".$key['P_code'].$key['P_categorycode']."</td>"; $_SESSION['table'].="<td>".$key['p_name']."</td>"; $_SESSION['table'].="<td>".$key['p_catename']."</td>"; $_SESSION['table'].="</tr>"; } $_SESSION['table'].='</table>'; //商品名のみ追加→商品コード割り振り if(isset($_POST['flower_name'])){ $stmt2 = $pdo->query("select P_code from p_code ORDER BY P_code"); $new_Pcode=array(); //新しい商品コード、生成、取り扱い用配列 foreach ($stmt2 as $key) { if($key['P_code']==null){ $new_Pcode = str_split($key['P_code-1']); } } } ?> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <script type="text/javascript" src="js/jquery-3.2.1.min.js"></script> <link rel="stylesheet" type="text/css" href="css/style.css"> <script type="text/javascript"> $(function(){ $('#add_product_inp').click(function(){ $('#add_cateproduct_div').css('display','none'); $('#add_product_div').css('display','block'); //td_val=$(this).text(); //$('#selected_fname').val([td_val]); //$('#selected_form').submit(); }); $('#add_cateproduct_inp').click(function(){ $('#add_product_div').css('display','none'); $('#add_cateproduct_div').css('display','block'); //td_val=$(this).text(); //$('#selected_fname').val([td_val]); //$('#selected_form').submit(); }); $('#cate_serch_inp').keyup(function() { $(function(){ $("#cate_serch_inp").on('submit',function(e){ var fd=new FormData($(this).get(0)); $.ajax({ "url":"postsample.php", "data":fd, "type":"post", "processData": false, "contentType": false, }).done(function(response){ alert(response); } ); e.preventDefault(); }); }); }); }); </script> <style type="text/css"> </style> </head> <body> <div id="main"> <input type="radio" name="div_change" id="add_product_inp"><a>商品の追加</a> <div id="add_product_div"> <form id="add_product_frm" action="masta_add.php" method="post"> <input name="cate_serch_inp" id="cate_serch_inp" type="text" placeholder="商品の種類を選択" autocomplete="off" required><br> <input name="" placeholder="商品を追加" autocomplete="off" required><input id="submit" type="submit" value="追加"> </form> </div> <br> <input type="radio" name="div_change" id="add_cateproduct_inp"><a>商品の種類追加</a> <div id="add_cateproduct_div"> <form action="masta_add.php" method="post"> <input type="text" placeholder="商品の種類を追加" autocomplete="off" required><input type="submit" value="追加"> </form> </div> <hr> <h1>取り扱い商品一覧</h1> <div id="table"> <?php echo $_SESSION['table'];?> </div> <div id="serch"> <form method="post" action="masta_add.php"> <h4>取り扱い商品検索</h4> <input type="checkbox" name="chk" id="chk"><a>商品名のみ検索</a><br> <input type="checkbox" name="chk" id="chk"><a>職行</a><br> <input type="text" placeholder="商品名" autocomplete="off" required> <input placeholder="商品コード" autocomplete="off" required> <input type="submit" name="" value="検索"> </form> </div> </div> </body> </html>
mashumaro0628

2017/12/11 05:19

すみません。本来試したソースはこちらなのですがこちらにはりつけても動きませんでした。
mashumaro0628

2017/12/11 05:20

$('#cate_serch_inp').keyup(function() { $(function(){ $("#cate_serch_inp").on('submit',function(e){ var fd=new FormData($(this).get(0)); $.ajax({ "url":"postsample.php", "data":fd, "type":"post", "processData": false, "contentType": false, }).done(function(response){ alert(response); } ); e.preventDefault(); }); }); });
mashumaro0628

2017/12/11 05:24

キー操作があればページを再描画せず同ページにポストするという処理なのですが 最初は投稿したソースの一部をくりぬきこの部分だけためしました $('#cate_serch_inp').keyup(function() { $.post( "masta_add.php", $(this).serialize(), function(response){ alert(response); }); return false; });
yambejp

2017/12/11 05:25

ごめんなさい、回答にではなく本文の方につけなおしてもらえますか?
yambejp

2017/12/11 07:02

> キー操作があればページを再描画せず同ページにポストするという処理なのです 「ポストする」というのはバックグラウンドでpostデータを送り結果を 非同期で受け取るという認識でよいですか? 単純にページの遷移をするならformをサブミットしてあげないと いけませんが
yambejp

2017/12/11 07:08

あと#cate_serch_inpはただのinput要素ですよね? submitを検出したいなら親の#add_product_frmではないのですか? シリアライズするのも#add_product_frmが対象になるような気がします
mashumaro0628

2017/12/12 01:10

バックグラウンドで受け取ってデータの変更箇所を変更させたいです。 詳しく言うとibputタグのテキストボックスに一文字入力、削除するごとに似た文字列をデータベースから持ってきて ドロップダウンリストに表示するという処理です。
yambejp

2017/12/12 01:59

> バックグラウンドで受け取ってデータの変更箇所を変更させたい 最初の回答のところに提示したソースではだめなんでしょうか?
mashumaro0628

2017/12/14 04:31

responceに意図した値が入りました。 受け取りの文を書いてなかっただけでした。 ところでなのですがresponceの値をPHPに受け渡す方法はないのでしょうか?
yambejp

2017/12/14 04:41

> responceの値をPHPに受け渡す方法 状況がわかりません ajaxでpostした結果がresponseなのにそれをまたphpに渡すのですか? HTML内に流用したいということならresponseはテキストなので それを編集してつかいます。場合によってはjsonデータで受け取ったほうが 編集はラクかもしれません
mashumaro0628

2017/12/14 05:24

別ファイルのDB検索で受け取った結果を $table .= "<select>"; foreach($結果 as $key){ $table .= "<option>".$key."<option>" } $table .= "</select>"; このtableという変数に入ったドロップダウンリストがresponseで帰ってきてるんですが この後、responseをどう使えばドロップダウンリストを表示できるのかわかりません
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問