2012-09-14 25 views
0

我現在正在使用jquery .submit操作(表單)來POST數據。 JAVA中的正常POST操作不會傳遞標籤/值鍵。對於以下(樣本)表格,我如何做到這一點?我不想使用Ajax,因爲我的表單也會上傳文件字段,而且我知道如何處理,只有在簡單的POST操作中。Jquery 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; 
     } 
    } 
} 

回答

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循環之前,首先如果你需要找到的標籤數據,進行譯碼後,陣列 組輸入的值

像這樣:

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版本

+0

感謝Minimihi,這是部分工作作爲PHP˚F ile會先前輸出id /值對,並且只輸出新標籤但不輸入值。我需要在我的foreach函數中更改什麼? –

+0

嘗試了你的建議但不工作,可能並不瞭解我需要做的改變。此代碼也會影響我的文件附件,上傳。 –

+0

啊..很抱歉。在if()中,當它是'標籤'時,我寫了'label'。如果()在內部的foreach(): ... foreach($ _ POST爲$ key => $ value){if($ key ==='labels'){... – Minimihi