首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

ASP 動態新增表格列資料提交:Request.Form 陣列遍歷與同名輸入框處理

     編輯:程式設計綜合問答

核心機制

JS cloneNode(true) 複製的 `` 會產生多個同名表單欄位。ASP Request.Form("field") 回傳以逗號分隔的字串(如 "val1,val2,val3")。

提取所有列資料

<%
Dim rawFields, arrFields, i, rowCount
rawFields = Request.Form("fieldName") ' 取得 "v1,v2,v3"
If rawFields <> "" Then
    arrFields = Split(rawFields, ",")
    rowCount = UBound(arrFields) + 1
    For i = 0 To UBound(arrFields)
        ' 對應第 i+1 列的 fieldName 值
        Response.Write "Row " & (i+1) & ": " & arrFields(i) & "
" ' 同步處理其他欄位:Request.Form("otherField") 也會是逗號分隔 Next End If %>

多欄位同步對應

Dim fields, cols, i, j
cols = Array("col1", "col2", "col3") ' 所有輸入框 name
ReDim fields(UBound(cols), 0) ' 暫存

For Each col In cols
    Dim vals : vals = Split(Request.Form(col), ",")
    If UBound(vals) > UBound(fields, 2) Then ReDim Preserve fields(UBound(cols), UBound(vals))
    For j = 0 To UBound(vals)
        fields(Array.IndexOf(cols, col), j) = vals(j)
    Next
Next

' 現在 fields(colIdx, rowIdx) 即為第 rowIdx 列第 colIdx 欄的值
For i = 0 To UBound(fields, 2)
    ' 組裝 INSERT SQL
    sql = "INSERT INTO tbl (col1,col2,col3) VALUES ('" & fields(0,i) & "','" & fields(1,i) & "','" & fields(2,i) & "')"
    conn.Execute sql
Next

關鍵注意點

  • 所有動態列的 `` 必須同名,ASP 才能自動合併為逗號字串。
  • 若某列欄位為空,瀏覽器仍會提交空字串,Split 結果長度一致,行索引對齊。
  • 防止 SQL 注入:使用參數化查詢或 Replace(val, "'", "''") 轉義。
  • 檢查 Request.Form 是否為空,避免 Split("") 產生單元素空陣列。

總結

ASP 處理 JS 動態複製的表格列,關鍵在於同名輸入框自動合併為逗號分隔字串,使用 Split 還原陣列後按行索引對應各欄位寫入資料庫。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved