HTML 要素のプロパティをデータとして POST 経由で送信したいのですが、たとえば、要素が表示されているかどうかなどです。
6 に答える
HTMLフォームはフォーム入力の名前のみを投稿するため、PHPとHTMLだけではできません。JavaScript を追加する必要があります。これは、フォームが送信されるときに、すべての入力を反復処理し、それらの値を変更して属性値も含めるようにします。
例:
yourform.onbeforesubmit = function() {
// Loop over form elements and append -visible or -hidden to its value based on CSS style
// jQuery selectors like .is(":visisble") would help a lot here.
// This is just a basic example though - it would require an explicit visibility CSS rule on each
// input element...
for (var i=0; i<yourform.elements.length; i++) {
yourform.elements[i].value = += "-" + yourform.elements[i].style.visibility;
}
}
別の方法は、入力自体の値を変更するのではなく、表示されているユーザー入力ごとに非表示の入力を保持し、属性を表示されている入力ではなく非表示の入力の値として設定することです。
アヤックスで。Prototype Framework を試してみてください。本当に使いやすいです。 http://prototypejs.org/api/ajax/request
これは PHP ではできません。Javascript を使用してこの情報を特定し、Ajax リクエストを送信するか、この情報を既存のフォームに追加する必要があります。
もう少し詳しく説明すると、PHP はサーバー側で実行され、クライアント (ブラウザー) に送信されます。サーバーは、ブラウザ内の HTML 要素の状態を認識していません。
とにかく提出されたフォームがあると私が知る限り?したがって、フォームが送信される前に呼び出される JavaScript の一部 (フォームの onsubmit プロパティ) を追加し、要素のステータス (可視、非表示など) を読み取らせ、この情報をいくつかの非表示のフォーム フィールドに設定します。
フォームが送信される前に呼び出された JavaScript が true を返していることを確認してください。そうでない場合、アクションはキャンセルされます。
次のように、PHP を使用して非表示の入力を含めます。
<input type="hidden" id="hidden1" name="hidden1" value="<?php if(condition) echo "default"; else echo "default";?>">
このデフォルト値は、あるページのロードから別のページのロードに追加の非表示データを転送するために、ページのロード中に PHP によって設定できます。ただし、ページの読み込み後に JavaScript で変更することもできます。
<script type="text/javascript">
document.getElementById("hidden1").value="true";
</script>
注: PHP は、非表示または非表示でない要素の値を、次のページの読み込み時にのみ変更できます。ブラウザに送信する HTML を制御することはできません。これが、Javascript(クライアントサイドスクリプト)が必要な理由です。
それをしたい場合は、要素の属性に応じて情報を入力するいくつかの非表示フィールドと JavaScript を作成する必要があると思います。私の知る限り、他に方法はありません。
最初にデータ定義標準を定義する必要があります。何をどの名前で保存するかです。
次に、サーバーで最終的に一度シリアル化を解除するために、結果をシリアル化してPOST経由で送信する必要があります。
効果的な方法として、JSON シリアライゼーションを使用します。