[英]Processing a dynamically generated form in javascript with php post to database
我有一個包含動態生成的字段的表單。 提交的表單中可以有任意多個字段,具體取決於用戶添加了多少個字段。 這是一個JSFIDDLE,您可以參考它來了解我正在動態生成什么樣的字段。 鏈接到JSFIDDLE
這個JSFIDDLE和我的項目的唯一區別是,我不是在一組中生成2個下拉列表和2個輸入字段,而是在一組中生成3個下拉列表和1個輸入字段。 現在,用戶可以從jsfiddle的下拉列表中進行選擇,現在可以生成的集數最多為15。
需要知道的是,如果用戶生成了7套數據,我將如何知道每個字段的名稱,因為我必須使用PHP來處理此表單的數據並提交給數據庫。
您的jQuery代碼已經明確命名了字段。 例如:
$("<input>").attr("name", "a").appendTo(newDiv);
這將創建一個名為輸入a
:
<input name="a" />
您的jQuery為每個動態創建的輸入賦予相同的名稱。 如果您提交具有3個具有相同名稱的字段的以下表單,則服務器將收到a=value1&a=value2&a=value3
。
<form>
<input name="a" value="value1" />
<input name="a" value="value2" />
<input name="a" value="value3" />
<input type="submit" />
</form>
這適用於大多數服務器技術,但不適用於PHP。 PHP用最后一個值覆蓋現有值。 因此,如果您檢查了PHP中a
的值,則只會看到value3
。 但是,好消息是您可以稍微更改輸入名稱,並使PHP識別所有值。 在PHP中,當在輸入名稱后加上方括號( name="a"
變為name="a[]"
)時,PHP會將值解析為Array。 因此,對於以下略作修改的形式:
<form>
<input name="a[]" value="value1" />
<input name="a[]" value="value2" />
<input name="a[]" value="value3" />
<input type="submit" />
</form>
當您查看PHP中a
的值時,將得到一個包含value1
, value2
和value3
的值數組。 因此,只需將您的jQuery代碼更改為在名稱末尾使用方括號即可:
$("<input>").attr("name", "a[]").appendTo(newDiv);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.