2016-03-03 67 views
0

以下腳本將發送$_POST['id']=[1,2,3]到服務器。使用jQuery將多個值發佈到服務器

相反,我希望將$_POST['id']=[[1,'extra1'],[2,'extra2'],[3,'extra3']]發送到服務器,或發送$_POST['id']=[1,2,3]$_POST['extra']=['extra1','extra2','extra3']到服務器。

我可以通過遍歷表來實現,但HTML是PHP生成的,而我想修改HTML以儘可能簡單地做到這一點。

這是如何最好地完成?

https://jsfiddle.net/5a8cLt08/2/

$('#go').click(function() { 
    var data = $('#mytable tbody input.cb:checked').serializeArray(); 
    console.log('data', data); 
    $.post('ajax.php', data, function(json) { 
    console.log('json', json); 
    }, 'json'); 
}); 

<table id='mytable'> 
    <tbody> 
    <tr> 
     <td> 
     <input class="cb" type="checkbox" value="1" secondValue="extra1" name="id[]"> 
     </td> 
     <td>bla1</td> 
     <td> 
     <input class="cb" type="checkbox" value="2" secondValue="extra2" name="id[]"> 
     </td> 
     <td>bla2</td> 
     <td> 
     <input class="cb" type="checkbox" value="3" secondValue="extra3" name="id[]"> 
     </td> 
     <td>bla3</td> 
    </tr> 
    </tbody> 
</table> 
<button id="go">Go</button> 

回答

1
<input class="cb" type="checkbox" value="1" name="id[]"> 
<input type="hidden" name="extras[1]" value="extra1" /> 

這將填充$ _POST [ '附加']與ID的關聯數組=>額外。 這當然假設你通過PHP循環來填充它,並且可以很容易地實現上述功能。

如果沒有,您可能需要使用JavaScript從輸入中提取所需的屬性。

更新

您也可以通過JSON值到這一點。理想情況下,您希望對要作爲值傳遞的數據執行$valueData = json_encode

輸入看起來像:

<input class="cb" type="checkbox" value='{ "id": 1, "extras": "extra1" }' name="id[]"> 

你的$ _ POST將是這樣的:

$_POST["id"] = [ 
    '{ id: 1, extras: "extra1" }', ... 
] 

你可以得到由做類似所需的數據:

$data = json_decode($_POST["id"][0]); 

$id = $data->id; $extra = $data->extras; 
+0

是的,我想我可以這樣做,而且這樣做很容易。但是,它會導致發佈額外的數據,這是不必要的,因爲只需要與檢查值關聯的額外值。我想知道我是否可以使用'value = [1,'extra1']'這樣的東西,但不要指望我能。或者可能在每個輸入中加入一個'data'值,選擇匹配的'input.cb:checked',以及如何序列化'data'值? – user1032531

+0

@ user1032531您可以在您的值中設置JSON編碼值,然後使用'json_decode'對其進行解碼,而不是使用隱藏字段。 – apokryfos

+0

@是否有典型的'value'看起來像我在之前的評論中展示過的,還是會引用它作爲有效的HTML? – user1032531

相關問題