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

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

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

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

JavaScript

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

HTML

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

Q&A

解決済

5回答

22309閲覧

画面遷移せずにデータをPOSTしたい

Takuma_Tanaka

総合スコア128

PHP

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

JavaScript

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

HTML

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

0グッド

0クリップ

投稿2016/07/29 10:16

編集2016/07/29 10:17

###前提・実現したいこと
管理画面と公開画面があり、管理画面で入力したHTMLタグを公開画面に反映させようとしています。

###発生している問題・エラーメッセージ
管理画面でPOSTメソッドを利用して、公開画面にHTMLタグを送信し反映させているのですが、管理画面でHTMLタグを入力し、submitすると公開画面に遷移してしまいます。
管理画面にとどまったまま、入力したHTMLタグのみを公開画面に送信したいと考えています。

###該当のソースコード
公開画面(test._o.php)

<?php echo $_POST['TEST']; ?>

管理画面(test.html)

<form action="test_o.php" method="post"> <textarea name="TEST" rows="4" cols="40">ここにソースを入力してください</textarea> <br> <input type="submit" value="実行"> <input type="reset" value="リセット"> </form>

###試したこと
以下のサイトを参考に管理画面を3つ作ってみましたが、どのソースでもsubmitを押すと公開画面に遷移してしまいます

http://okwave.jp/qa/q1048443.html
http://www.confrage.com/ajax/async/post/post.html
http://blog.goo.ne.jp/xmldtp/e/be437400b05856141b2f49aa67e52fe2

管理画面その1

<form action="test_o.php" method="post" target="f1"> <textarea name="TEST" rows="4" cols="40">ここにソースを入力してください</textarea> <br> <button type="button" id="nonido">送信</button> <input type="reset" value="リセット"> </form> <iframe name="f1" width=0 height=0 style="visibility:hidden"></iframe>

管理画面その2

<script type="text/javascript" src="http://www.google.com/jsapi"></script> <script type="text/javascript">google.load("jquery", "1.3");</script> <script type="text/javascript"> $(document).ready(function(){ $("#form1").submit(function(){ $.post( "test_o.php", $(this).serialize(), function(response){ alert(response); } ); return false; }); }); </script> <form id="form1"> <textarea name="TEST" rows="4" cols="40">ここにソースを入力してください</textarea> <br> <input type="submit" value="送信"> <input type="reset" value="リセット"> </form>

管理画面その3

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js" type="text/javascript"></script> <script> function myalert(buf) { alert(buf); } </script> <form name="f1" id="f1" action="test_o.php" method="post" target="nodisp"> <textarea name="TEST" rows="4" cols="40">ここにソースを入力してください</textarea> <br> <input type="submit" value="送信"> <input type="reset" value="リセット"> </form> <iframe name="nodisp" id="naiyo" style="display:none"></iframe>

###補足情報(言語/FW/ツール等のバージョンなど)
できればsubmitボタンを押したら、「登録完了しました」というalertなどが表示されて、管理画面に留まるようにしたいです。

色々と調べてみたのですが、どうしても公開画面に遷移してしまい困惑しています。
POSTメソッドの動きなどが理解できていない為に上手く行かないと思っていますが、どこが悪いのか全く分からない状態ですので、ご教示お願いします。

※ご教示頂いた内容の確認及び返信が週明けになるかもしれませんが、ご容赦ください。

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

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

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

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

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

guest

回答5

0

Ajaxを使えばできると思います。
jQueryを使っているようですので、関連のメソッドを使えば比較的簡単です。
関連メソッド
ajax マニュアル

投稿2016/07/29 10:30

編集2016/07/29 10:34
hirohiro

総合スコア2068

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

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

hirohiro

2016/07/29 10:36

フォームをサブミットするとページ遷移するのは仕様ですから、サブミット機能設定したボタンやリンクを設定したアンカータグ以外をトリガーにしてくださいね。
Takuma_Tanaka

2016/08/01 02:13

ご回答ありがとうございます。 色々試していたのですが、ソースの変更後、ページ更新をしても反映されて無くて毎回同じ内容になっていたようです。 (ソース変更後、ちゃんと反映されているか確認するべきでした。) 再度皆さんからご提示頂いた内容にて試してみたいと思います。 submitの仕様を理解できていませんでした。 またajaxは全く分かっていませんので、勉強して利用しようと思います。
guest

0

これでどう?

HTML

1<script src="js/jquery.js"></script> 2<script> 3$(function() { 4 $('#f0').on('submit', function(e) { 5 $.ajax( { 6 url : $(this).attr("action"), 7 cache : false, 8 type:$(this).attr("method"), 9 async: false, 10 dataType:"text", 11 data :$(this).find("textarea[name=TEST]").val(), 12 success: function(msg){ 13 console.debug(msg); 14 }, 15 error: function(XMLHttpRequest, textStatus, errorThrown) { 16 console.log( textStatus); 17 }, 18 }); 19 e.preventDefault(); 20 }); 21}); 22</script> 23<form action="y.php" method="post" id="f0"> 24<textarea name="TEST" rows="4" id="t0" cols="40">ここにソースを入力してください</textarea> 25<br> 26<input type="submit" value="実行"> 27<input type="reset" value="リセット"> 28</form>

投稿2016/07/29 12:31

yambejp

総合スコア114747

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

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

Takuma_Tanaka

2016/08/01 02:08

ご回答ありがとうございます。 色々試していたのですが、ソースの変更後、ページ更新をしても反映されて無くて毎回同じ内容になっていたようです。 (ソース変更後、ちゃんと反映されているか確認するべきでした。) 再度皆さんからご提示頂いた内容にて試してみたいと思います。 ソースを記載頂いてありがとうございます。 どのような動きになるのか勉強しながら試させていただきます。
guest

0

fengyuanchen/submitter: A simple jQuery form submitting plugin.
このようなプラグイン利用すると楽ですよ。

日本語で説明あるのはここかな。
フォームの送信をAjax化できるjQueryプラグイン「Submitter」

投稿2016/07/29 10:44

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

Takuma_Tanaka

2016/08/01 02:10

ご回答ありがとうございます。 色々試していたのですが、ソースの変更後、ページ更新をしても反映されて無くて毎回同じ内容になっていたようです。 (ソース変更後、ちゃんと反映されているか確認するべきでした。) 再度皆さんからご提示頂いた内容にて試してみたいと思います。 私がやりたいことができそうなプラグインを紹介頂いてありがとうございます。
guest

0

そういう風にコーディングしてあるので、そう動いてるってことですね。

HTML

1<form action="test_o.php" method="post">

actionを管理画面に入力した情報を更新するスクリプト名にするといいです。
というか、更新処理は実装してあるんですかね?

投稿2016/07/29 10:38

takasima20

総合スコア7458

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

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

Takuma_Tanaka

2016/08/01 02:12

ご回答ありがとうございます。 色々試していたのですが、ソースの変更後、ページ更新をしても反映されて無くて毎回同じ内容になっていたようです。 (ソース変更後、ちゃんと反映されているか確認するべきでした。) 再度皆さんからご提示頂いた内容にて試してみたいと思います。 actionにスクリプト名が利用できるのは全く知りませんでした。 勉強になりました。
guest

0

ベストアンサー

提示のソースの一番上のやつ、button type="button"なのに送信されるんですか?
type指定がないときはデフォルトでsubmitですが、type="button"なら何も起きない気がするのですが…

submitだと属するform要素のactionを実行してしまいますので、下記のどちらかの方法で回避します。
①input type="submit"を使わず、button type="button"を使い、クリックされたら処理するようにする
②input type="submit"のまま、クリックしたときにデフォルトのイベントをキャンセルする

①でも②でもいいので、クリックされたとき、つまり↓

・onClick=""
・JSのaddEventListener
・jQueryの.on('click',function(){})

のいずれかで自前の処理を行います。

たとえばjQueryなら、

$('button').on('click',function(e){ e.preventDefault(); $.ajax({ ・・・略 })

このpreventDefault()でブラウザがもともと持っている処理をキャンセルすることができます。
つまりsubmitをクリックしたとしても、クリックしなかったことになるわけですね。
ここから先はajaxなどを使って自分でPHP側にPOSTすれば、画面遷移せずに送信処理を行うことができます。

投稿2016/07/31 15:21

NatsumiOki

総合スコア1298

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

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

Takuma_Tanaka

2016/08/01 02:07

ご回答ありがとうございます。 色々試していたのですが、ソースの変更後、ページ更新をしても反映されて無くて毎回同じ内容になっていたようです。 (ソース変更後、ちゃんと反映されているか確認するべきでした。) 再度皆さんからご提示頂いた内容にて試してみたいと思います。 "submit"及び"button"の動作について勉強になりました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問