いくつかの情報を挿入してからこのフォームを送信できる html ページがあります。これにより、データベースの情報が変更されます。私は通常、サーバーでボタン呼び出しphpファイルを送信します。しかし、私が望むのは、この php ファイルが、私がリクエストを送信したのと同じ html ページを、変更を加えて返してくれることです。例: 「データベースの更新に成功しました」というテキストが追加されます。AJAX なしでどうすればよいですか?
ありがとう
PHP ファイルで、header() 関数を呼び出してユーザーをリダイレクトします。例えば:
header('Location: url.php');
リダイレクト先のページのコンテンツを変更するには、ページがチェックする URL に何かを渡すことができます。例えば:
header('Location: url.php?submitted=1');
これを実装する方法は他にもありますが、これが最も簡単に思えます。送信ページの最後まで header() を呼び出したくないことに注意してください。
POST / REDIRECT/GETを使用する
抜粋:
ユーザーがフォームを送信します
これは非常に簡単です。ユーザーはフォームに入力し、送信ボタンを押すか、キーボードでEnterキーを押してフォームを送信します。
フォームデータをセッションに保存します
データを処理した後、エラーが見つかったため、エラーメッセージをフォームに再表示する必要がありますが、フォーム全体にデータを入力して、1つの小さな間違いを修正するためだけにフォーム全体を再入力する必要がないようにします。そのため、データをセッション($ _SESSION)に保存します。セッション変数は、セッションが有効である限り、またはセッションが削除されるまで、ページからページへと引き継がれます。リダイレクトするとサーバーによって情報がすぐに破棄されるため、これは情報を配置するのに理想的な場所です。
303リダイレクトを使用して、ユーザーを同じページにリダイレクトします
ユーザーの情報をセッションに保存したら、同じページにリダイレクトする必要があります。これが正しく機能するためには、303リダイレクトを使用する必要があります。これは、リダイレクトで303ヘッダーを送信する必要があることを意味します。303リダイレクトにより、ブラウザは最初のHTTPPOSTリクエストを再送信せずにページをリロードします。これには、ユーザーが戻るボタンまたは更新ボタンを使用する場合も含まれます。
セッションに保存されたデータを使用してフォームに再入力しますページがユーザーに送信されると、セッションに保存した情報を再入力します。
最初に CGI でページ全体を生成することによってのみ、フィールドの 1 つの値を取得する恐ろしく複雑な方法を使用して、document.innerHTML または Javascript でそのようなものに設定する必要があります。しかし、引用の問題を解決するには、地獄を通過する必要があります。AJAX を使用してください。これはまさにこの目的のために作成されたものであり、必要なものに関連する完全な地獄を回避するために作成されました。
または、ページの「変更された部分」が iframe である可能性がありtarget
、フォームの属性を設定して、PHP が iframe コンテンツのみを返すようにすることができます。