0

現在、jquery .submit アクション (フォーム) を使用してデータを POST しています。JAVA での通常の POST 操作は、ラベル/値キーを渡しません。次の(サンプル)フォームでは、どのようにそれを行うのですか?. 私のフォームにはアップロードファイルフィールドもあり、単純な POST 操作でのみそれを処理する方法を知っているため、Ajax を使用したくありません。

<body>
     <form id="frmRequest" name="frmRequest" >

                <div class="clearfix" id="idRequestDetails"  >
                    <table width="809" border="0" id="tbl_data_1_1_1_1__" summary="Profile">
                      <tr>
                        <th width="156" scope="col"><label class="labelrequest" for="txtProfileName1__">Name</label>
                        </th>
                        <th width="74" scope="col"><label class="labelrequest" for="txtProfileUserID1__">User ID</label></th>
                        <th width="131" scope="col"><label class="labelrequest" for="txtSiteCost1__">Site Cost Centre</label></th>
                         <th width="182" scope="col"><label class="labelrequest" for="txtDetail1__">Additional Details</label></th>
                      </tr>
                      <tr>
                        <td><input type="text" name="txtProfileName1__" id="txtProfileName1__" tabindex="100" /></td>
                        <td><input name="txtProfileUserID1__" type="text" class="clearfix" id="txtProfileUserID1__" tabindex="110" size="8" /></td>
                        <td><input name="txtSiteCost1__" type="text" id="txtSiteCost1__" tabindex="220" size="8" /></td>

                        <td><textarea name="txtDetail1__" rows="1" id="txtDetail1__" tabindex="240"></textarea></td>
                      </tr>
                    </table>
                  </div>
        </body>

以下を試しましたが、動作しませんでした

foreach ($_POST  as $key => $value)
{
   if($key === 'labels') {
      // Decode JSON string to array
      $value = json_decode($value, true);
   }
   if (!is_array($value))
   {
      $message .= "<br/>".$key." : ".$value;
   }
   else
   {
      foreach ($value as $itemvalue)
      {
         $message .= "<br/>".$value." : ".$itemvalue;
      }
   }
} 
4

1 に答える 1

0

フォームが送信される前に、必要な情報で入力を作成する必要があります。

これは、LABEL タグ間のテキストを見つけるサンプルです。非表示の INPUT を作成します。INPUTの名前を設定します。ラベル値の JSON エンコード配列である INPUT の値を設定します

$("form").submit(function(event) {
   $labels = $(this).find("label");
   $ret = [];
   $.each($labels, function() {
       $ret.push($(this).text());
   });
   $input = $("<input>").attr("type", "hidden").attr("name", "labels").val(JSON.stringify($ret));
   $(this).append($input);
});

すべてのラベルを foreach ループの JSON オブジェクトに入れているので、最初の if の前に、ラベル データを見つけて配列にデコードする必要があります。

このような:

foreach ($_POST  as $key => $value)
{
   if($key === 'labels') {
      // Decode JSON string to array
      $value = json_decode($value, true);
   }
   if (!is_array($value))
   {
      $message .= "<br/>".$key." : ".$value;
   }
   else
   {
      foreach ($value as $itemvalue)
      {
         $message .= "<br/>".$value." : ".$itemvalue;
      }
   }
} 

念のため、JSON 関数と PHP のバージョンを確認してください。

于 2012-09-14T06:03:45.540 に答える