Jquery POST标签/值对

时间:2012-09-14 05:51:09

标签: php jquery

我现在使用jquery .submit action(form)来POST数据。 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;
      }
   }
} 

1 个答案:

答案 0 :(得分:0)

在发送表单之前,您必须使用所需的信息构建输入。

以下是我在LABEL标签之间找到文字的示例。 创建隐藏的输入。 设置INPUT的名称。 设置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循环中,在第一次之前,你需要找到标签数据,将其解码为数组

像这样:

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 functions和您的PHP版