0
我有一個看起來像這樣兩種形式:如何獲得一個兩種形式提交
<h2>First form</h2>
<form id="first-form">
<table>
<tr>
<td>
<input type="text" name="left[]" value="">
</td>
<td>
<input type="text" name="right[]" value="">
</td>
</tr>
<tr>
<td>
<input type="text" name="left[]" value="">
</td>
<td>
<input type="text" name="right[]" value="">
</td>
</tr>
<tr>
<td>
<input type="text" name="left[]" value="">
</td>
<td>
<input type="text" name="right[]" value="">
</td>
</tr>
<tr>
<td>
<input type="text" name="left[]" value="">
</td>
<td>
<input type="text" name="right[]" value="">
</td>
</tr>
</table>
</form>
<!-- some more HTML -->
<h2>Second form</h2>
<form id="second-form">
<label>
<input type="search" name="sentence" value="i like the bananas">
</label>
<label>
<input type="text" name="parse-as" value="S">
</label>
<label>
<select name="include-features">
<option>Yes</option>
<option selected="selected">No</option>
</select>
</label>
<label>
<select name="show-earley">
<option>Yes</option>
<option selected="selected">No</option>
</select>
</label>
<button type="submit">Parse</button>
</form>
需要注意的是第一種形式可以包含更多的行;用戶可以向表單添加更多行。正如你所看到的,只有一個提交按鈕。這是因爲兩種表格都必須一起提交。在jQuery的我會做這樣的事情:
$("#second-form").submit(function(event) {
$("first-form").submit();
event.preventDefault();
});
作爲球隊的前端開發人員,我需要這兩種形式的值傳遞到後端。不幸的是,我不知道如何做到這一點。我想我可以做這樣的事情:
$("#second-form").on("submit", function(event) {
$("#first-form").submit();
$.post("php/do.php", $("#second-form").serialize());
event.preventDefault();
});
$("#first-form").on("submit", function(event) {
$.post("php/do.php", $("#first-form").serializeArray());
event.preventDefault();
});
.serializeArray()
似乎必要的,因爲在HTML中#first-form
陣列狀值。然而,在第二種形式中,我們不需要數組。我現在遇到的問題是,我需要在do.php
中處理輸入的代碼。你如何訪問數據,即PHP中的序列化表單?
我嘗試了一些東西,如
<?php
$data = parse_str($_POST["right[]"]);
var_dump($data);
$date1 = parse_str($_POST["right[][0]"]);
var_dump($data);
$data2 = parse_str($_POST["right[][1]"]);
var_dump($data);
?>
但所有這些返回Undefined index
錯誤,這似乎意味着我的「選擇」是錯誤的。我將如何去從第一種形式選擇數組,以及PHP中第二種形式的值?我的jQuery提交first-form
與第二個正確的方法?
你將不得不結合形式或使用ajax。你不能提交2個像這樣的HTML表單。 –
@ DanielA.White你可以在答案中詳細說明嗎?合併表單不是一種選擇。 –
@ DanielA.White請重新打開。這是*不重複,因爲我問如何訪問PHP中的內容,而鏈接的問題不關心PHP訪問。重要的是一個表單是一個數組('serializeArray'),另一個不是。鏈接的問題甚至沒有談及PHP訪問。請重新打開。 –