私は次のフォームを持っています:
<form method="post" action="http://domain.com/api.json?param=value"></form>
このフォームを送信すると、これにより私のドキュメントがからの応答に置き換えられhttp://domain.com/api.json
ます。
このフォームをPOSTすることは可能ですが、応答を受け取らないようにし、既存のHTMLをform
?
通常の200OK応答の代わりに、HTTP 204NoContent応答を送信します。
10.2.5204コンテンツなし
サーバーは要求を実行しましたが、エンティティ本体を返す必要はなく、更新されたメタ情報を返したい場合があります。応答には、エンティティヘッダーの形式で新しいまたは更新されたメタ情報が含まれる場合があります。これらのメタ情報が存在する場合は、要求されたバリアントに関連付ける必要があります。
クライアントがユーザーエージェントである場合、要求が送信される原因となったものからドキュメントビューを変更するべきではありません(SHOULDNOT)。この応答は主に、ユーザーエージェントのアクティブなドキュメントビューに変更を加えることなくアクションの入力を可能にすることを目的としていますが、新しいまたは更新されたメタ情報は、現在ユーザーエージェントのアクティブなビューにあるドキュメントに適用する必要があります。
204応答にはメッセージ本文を含めてはならないため、ヘッダーフィールドの後の最初の空行で常に終了します。
AJAX(この例ではXMLHttpRequest)を使用して投稿を送信できます
var xmlhttp = new XMLHttpRequest();
xmlhttp.open("POST", "http://domain.com/api.json?param=value", true);
xmlhttp.send(null);
事前に、必要に応じて。param値を取得してエンコードできます。
var val = encodeURIComponent(document.getElementById("param").value);
その場合、2行目は次のようになります。
xmlhttp.open("POST", "http://domain.com/api.json?param="+val, true);
それ以外の場合は、から送信するform
とページが読み込まれます。ハックは、それを非表示のiframeに配置し、完了したらiframeを削除することです。