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

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

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

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

JavaScript

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

Q&A

解決済

2回答

4502閲覧

submitを行いページしたの元の位置に戻りたい

yu.miura

総合スコア3

PHP

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

JavaScript

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

0グッド

0クリップ

投稿2021/05/21 03:43

送信ボタンを押してページトップに戻ってしまうのを、ページ下にあるフォームに戻りたい。

サイトで下記のコードを見つけてJavaScriptに貼り付けたが(<?php echo @$_REQUEST['scroll_top']; ?>)がVSコードでエラーの波線が出て使えない。

<input type="hidden" name="scroll_top" value="" class="st">に送信した場所を記憶させて、そこの値を呼び出すなどイメージはわかったのですが、実際にするとできません。

ご教授お願いできないでしょうか?

JavaScript

1$('form').submit(function(){ 2 var scroll_top = $(window).scrollTop(); //送信時の位置情報を取得 3 $('input.st',this).prop('value',scroll_top); //隠しフィールドに位置情報を設定 4 }); 5 6 window.onload = function(){ 7 //ロード時に隠しフィールドから取得した値で位置をスクロール 8 $(window).scrollTop(<?php echo @$_REQUEST['scroll_top']; ?>); 9 }

window.onload = function()の下記にある(<?php echo @$_REQUEST['scroll_top']; ?>)が波線が出ます。

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

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

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

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

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

guest

回答2

0

ベストアンサー

  • ハッシュをつけてformのactionに指定するか
  • サブミットで遷移せずxhrやfetchで非同期処理する

のが賢明です

サブミット時にcookieにスクロール位置を入れて
ロード時にスクロールをするということもないことはないですが
あまり効率的ではありません

参考

PHP

1<script> 2window.addEventListener('DOMContentLoaded', ()=>{ 3 document.querySelector('form').addEventListener('submit',e=>{ 4 e.preventDefault(); 5 fetch('api.php',{method:'post',body:new FormData(e.target)}).then(res=>res.text()).then(console.log); 6 }); 7}); 8</script> 9<form method="post"> 10<input type="text" name="hoge" value="123"> 11<input type="submit" value="send"> 12</form>

投稿2021/05/21 04:16

編集2021/05/21 07:17
yambejp

総合スコア116724

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

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

yu.miura

2021/05/21 05:17

回答有難うございます。 もしよろしければ、1番おすすめの例などをコードで提示いただけないでしょうか?
yambejp

2021/05/21 05:23

自分自身に飛ぶのが前提でしたから基本CORSに引っかからないということでよいですか? サブミットする際に値は渡すのでしょうか? formのsubmit処理を殺してfetch(自分,option)すれば良いでしょう。 あとは何を渡して、どう処理したいかによります
yu.miura

2021/05/21 07:02

submitした際にPOSTで同じページに飛ばして、エラーチェックを行います。エラーがなければ確認画面に行き、ある場合はエラーを出します。 エラーを出す際にTOPに戻るので、それをフォームの位置にさせたいです。 アドバイスございましたら、よろしくお願いいたします。
yambejp

2021/05/21 07:18

fetchでapiに飛ばす簡単なsampleあげておきました。 apiでチェックして戻り値をみてformをsubmitするか決めればいいでしょう
yu.miura

2021/05/23 15:45

返信が遅くなり、申し訳ございません。 ご丁寧にサンプルありがとうございます! 確認してみます。
guest

0

.jsファイル内ではPHP動きません。
PHPタグで囲ったらPHPが動作するわけではなく、原則としてあくまで.phpファイル内にてPHPタグが正しく解釈されます。

また「送信を押すとトップに戻ってしまう」というのは間違った認識で、form送信はaction属性の指定先に送信するので、「戻る」のではなく「リクエスト先の画面が表示される」という認識が正しいです。

画面にとどまりたいのでしたら、Ajaxなどで非同期でサーバーサイドの処理をさせるのが自然になると思います。
入力内容を初期状態にしたいのでしたらJavascriptから操作する必要がありますけどね。

投稿2021/05/21 03:56

m.ts10806

総合スコア80875

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

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

yu.miura

2021/05/21 04:01

そうなのですね、勉強になります! PHPページにスクリプトタグで囲むと、できるようになったかもしれません。
m.ts10806

2021/05/21 04:09

JavaScriptに直接リクエストを出力するのもセキュリティリスクがあります。
yu.miura

2021/05/21 05:19

どのような対応が一番ベターなのでしょうか? もしよろしければ、例を紹介いただけないでしょうか?
m.ts10806

2021/05/21 06:36

回答内にキーワード入れてますがそれではなんのヒントにもなりませんか?
yu.miura

2021/05/21 06:58

ありがとうございます。 行ってみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問