0

我现在正在使用 jquery .submit 操作(表单)来发布数据。JAVA 中的正常 POST 操作不会传递标签/值键。对于以下(示例)表格,我该怎么做?我不想使用 Ajax,因为我的表单也会有上传文件字段,我知道如何仅在简单的 POST 操作中处理它。

<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 的值,它是 JSON 编码的标签值数组

$("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);
});

由于我将所有标签放入 JSON 对象中,在 foreach 循环中,在第一个 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 回答