2011-06-06 19 views
0

夥計們,我在這個問題上撓了撓頭。

我有this website,基本上包含一些由用戶填寫的表單。然後用戶可以以可讀格式(pdf)或機器可讀格式(xml)下載該信息,但我在提交文本框時遇到了一些小問題。

我有幾個,例如在描述部分,但是當我訪問$ _POST ['Desc_Desc_desc']值,它是空的,即使我可以看到textarea上的內容。奇怪的是,當我用螢火蟲檢查元素,它顯示的元素,就好像它沒有內容..

任何人都可以圖什麼是造成這種奇怪的行爲?

+1

只需使用var_dump($ _ POST)進行調試並確保您的表單具有屬性method =「post」和操作集。 AFAIK螢火蟲不會顯示輸入欄位的內容。 – usoban 2011-06-06 10:01:26

+0

您是否正在訪問該ID或名稱?因爲我看到他們不同 – 2011-06-06 10:05:33

+0

那麼,表單具有method =「post」屬性,並且動作由javascript動態設置。我正在使用name屬性訪問字段,這裏是var_dump結果: array(4){[「Desc_Desc_name」] => string(3)「SAD」[「Desc_Desc_keywords」] => string(3)「 SAD「[」Desc_Desc_concept「] => string(14)」HTTP://URL.COM「[」Desc_Desc_desc「] => string(0)」「} 因此,textarea字段有一個條目(Desc_Desc_desc )但它由於某種原因而空 – mjb 2011-06-06 10:11:53

回答

2

service_level_library.buttons.prepForSubmit中,通過DOM cloneNode方法將textarea與表格的其餘部分一起克隆。這會複製HTML元素屬性,但不會複製DOM屬性。 (有時DOM元素節點的屬性有一個corresponding attribute,所以更新所述屬性影響的屬性,這可以使其顯示DOM屬性被複制。)

雖然textarea DOM objects具有value property,所述textarea HTML element不具有相應value屬性,所以value屬性不公開屬性。因此,當您克隆節點時,(空)value屬性將被複制,並將該元素的current value留下(可通過value屬性訪問)。

要解決你的腳本,執行下列操作之一:

  1. 複製克隆後的值。
  2. 在克隆之前,通過分配defaultValue屬性或設置節點的文本內容,爲textarea設置initial value。這是有效的,因爲克隆節點的當前值將被設置爲其初始值,並且textarea的深層副本將複製其文本內容(其初始值的來源)。
  3. 編程更換輸入textarea的克隆(儘管這會比其他選擇更復雜)之前,
+0

我想你可能是對的!我將所有隱藏在背景div上的表單克隆到要提交的新表單中。如果克隆不復制解釋爲什麼textareas爲空的值。 – mjb 2011-06-06 15:27:52

0

你說在你的問題$_POST['Desc_Desc_desc'],雖然在代碼中我看到一個名爲Dep_desc和ID Dep_Desc_Desc textarea。那麼你應該寫$_POST['Dep_desc'],即<textarea>name而不是id

此外,textarea s沒有value屬性,所以在您的html中,您應該在開始標籤和結束標籤之間寫入初始內容。

HTML

<textarea name="Dep_desc" id="Dep_Desc_Desc">Initial content</textarea> 

PHP

echo "The content of the textarea is ".nl2br(htmlspecialchars($_POST['Dep_desc'])); 

筆記

nl2br:尊重輸出的HTML與更換\n象徵新線。

htmlspecialchars:防止可能的XSS攻擊。

+0

頁面中有多個textareas,Desc_Desc_desc用於子部分Description,您引用的Dep_desc用於Dependability子部分,所以我們討論的是不同的文字區域。 我已經刪除了value屬性,不知道爲什麼我第一次出現它,我使用name屬性在POST對象中訪問它,結果仍然是相同的。 HALP! – mjb 2011-06-06 10:59:52

0

我用螢火蟲來分析一下得到由

document.getElementById('descriptionForm').submit() 

表單數據發送到您的腳本發送正確

內容類型:應用程序/ x-WWW的形式urlencoded的內容-length:113

Desc_Desc_name = SO & Desc_Desc_keywords =溢出& Desc_Desc_concept = HTTP%3A%2F%2Fso.com & Desc_Desc_des C =堆棧溢出+

  1. 表單動作參數的當前設置爲「submit.action」這產生404
  2. 按鈕表單標籤之外定義的形式。
  3. 表單按鈕不會激活表單上的提交。

底線:該表單未提交給預期收件人。

0

我也有類似的問題,但後來我發現,在底部的地方,我已經重複使用另一個元素的名稱是空的。這在var_dump和print_r上也擦掉了我所需的元素。花了一段時間才搞清楚了。