2009-03-17 12 views
4

このようなHTTPレスポンスを作成することはできますか?ブラウザーはそれを無視して以前に表示されたページを表示し続けますか?ブラウザは何もしないので、それは可能でしょうか?

私は次のシナリオを意味:

a)のユーザーは、いくつかのPOSTがサーバに行く(またはGET、しかしのはもっと面白いようにPOSTに固執してみましょう)

C)何か

Bをクリック)サーバが何らかの理由でそれが今回

d)のサーバーが送信特別に細工された応答で返信したくないと判断した

e)ブラウザにエラーページが表示されず、空のページが表示されず、リダイレクトされず、リロードされません。ユーザーがフォームを送信したことがないように表示します。

PSもちろんAJAXで包まれ、私は最低限の非javascriptのソリューションは

答えて

12

HTTP 204 No Contentを返すようにしてください。

クライアントはユーザエージェントである場合、それは要求が送信される原因となったもの からそのドキュメントビューを変更しないでください:それは言うRFC 2616 (Hypertext Transfer Protocol -- HTTP/1.1)でこのレスポンスコードの説明を参照してください。この応答は、主に、新規または更新されたメタ情報は、現在のユーザエージェントのアクティブビューの 文書に適用されるべきであるが、ユーザエージェントのアクティブ ドキュメントビューに変更を生じさせることなく、場所を取るべきアクションについて の入力を可能にすることを意図しています。

+0

新しいトリックに感謝します。 – JoshBerke

+0

ありがとう、これは私が探していたものです。 – Mekk

+1

これは愚かな質問がない理由です。 –

1

これ可能であるかどうかを尋ねることができ、通常AJAXと呼ばれる方法です。それには、Javascriptと、XMLHttpRequestの機能が必要です。

編集:一番下にあなたの 'PS' を気づきました。別の回答で示唆された204 responseは、有効な非Javascriptソリューションであるようです。

1

は、あなたがそれを行うとします。

ユーザーは何をしますか?もちろん、フォームを再度送信してください。

数回。

あなたのサイトが壊れていると判断し、離れることを決定します。

+0

まだいくつかのエラーシナリオでは、これは私が有用なものです... – Mekk

+0

私は好奇心が強いです。なぜあなたは何のフィードバックも与えたくないのですか?そのような場合にサブミットボタンを隠す/グレーアウトする方が良いのではないでしょうか?あなたが無駄でない限り、プロセスをユーザーから隠す利点は何ですか...うーん。 – MarkusQ

-2

いいえ。HTTPプロトコルは、要求 - 応答サイクルで構成されています。サーバーは返信しないと決めることはできません(できますが、プロトコルを破ってエラーをコミットしています)。

+0

しかし、現在表示されているものを更新したり変更したりすることをブラウザに知らせる定義済みのHTTP応答コードがあります。 – Eddie

0

私はそれを行うためにJavascriptが必要だと思う、あなたはリクエストを送信することができ、実際のページのリフレッシュ/リロードを避ける、Javascriptが返すfalseを行うことができるサーバーの応答に依存します。

私は204応答について知らないが、多分その方法は、あなたは、サーバー側からそれを行うことができます。

また、リクエストを送信した直後にfalseを返し、サーバーの応答(ajaxを使用)に応じて、実際のページを変更したり、別のページにユーザーを送信したりすることもできます。

関連する問題