2013-10-27 30 views
1

我試圖讓輸入字段將文本添加到服務器上的文件中,並將其動態添加到網頁上的select元素,但它不起作用非常好。目前我收到一個錯誤,表示e1爲空,文本沒有被附加到我的testdoc.txt文本文件中。如果我拿出代碼嘗試寫入文本文件,這沒有問題。我也嘗試沒有動態添加到選擇字段,看看它是否會附加到文件,並沒有去。在firebug中,我確實看到帖子,並且看到一個響應,但它不會被追加到文件中。以下是我目前的代碼片段。使用XHR更新服務器文件並將選項添加到html選擇

function submitxhr(){ 
var e1=document.getElementById('item'); 
var e2=document.getElementById('items'); 
var o=document.createElement('option'); 
var xhr = new XMLHttpRequest(); 
xhr.overrideMimeType("text/plain; charset=x-user-defined"); 
o.value=e1.value; 
o.text=e1.value; 
e2.options.add(o); 
xhr.open("POST","testdoc.txt"); 
xhr.send(e1); 
}; 

<form id="myForm"> 
    <input name="item" type="text" value="" /> 
    <select size="3" id="items" name="items"> 
    <input type="button" value="submit" ONCLICK="submitxhr()"> 
</form> 

我的下一步就是再創造在選擇形式的選項刪除按鈕,但我還沒有得到有尚未但任何幫助,將不勝感激。

[更新]如果我能夠將XHR POST傳遞到python CGI腳本,我可以找出添加和刪除。目前,我無法將POST傳遞給python CGI腳本。傳遞時找不到e1變量。

import cgi 
import cgitb 
cgitb.enable() 

form = cgi.FieldStorage() 

value1 = form.getvalue[e1] 

f = open(r'testdoc.txt', 'a') 
f.write(e1) 
f.close() 

我甚至檢查了這個問題,但是當我使用這張測試腳本,我也得到一個空值,「消息=‘writelines()需要一個迭代參數’。」 In my Python CGI script, how do I save to disk a file uploaded via POST request of data entered by the user in a form?

它看起來像值越過,但也許我沒有正確拉出數據。 F =,= f.writelines,的FileItem =的FieldStorage( 'userfile的',無 'sghjsjh')

感謝

回答

1

你忘了添加id到第一input場!它應該是:

<input id="item" name="item" type="text" value="" /> 

,而不是

<input name="item" type="text" value="" /> 
+0

謝謝,這讓我插入到我的選擇表單。昨天整天工作後,我必須給它上光。我現在只需要附加到我的文本文件。我嘗試使用python來獲取帖子,因爲我的原始後端腳本是python,但它似乎沒有得到e1值。 – screwuphead

0

只是爲了自帶的看到這一點,並希望玩弄了幾個小時,我終於能更新我的文字後,知道答案的人文件雖然python CGI腳本,並感謝科爾他得到它,所以我可以輸入一個選項到我選擇的領域,因爲我完全錯過了一個關鍵字段。

我需要更新我原來的網頁以下幾點:

function submitxhr(form){ 
var e1=document.getElementById('item'); 
var e2=document.getElementById('items'); 
var o=document.createElement('option'); 
var xhr = new XMLHttpRequest(); 
xhr.overrideMimeType("text/plain; charset=x-user-defined"); 
o.value=e1.value; 
o.text=e1.value; 
e2.options.add(o); 
var formElement = form; 
formData = new FormData(formElement); 
xhr.open("POST","appendtest3.cgi"); 
xhr.send(formData); 
}; 

<form id="myForm" name="myForm" action="" method="POST"> 
<input id="item" name="item" type="text" value="" /> 
<select size="3" id="items" name="items"> 
<input type="button" value="submit" ONCLICK="submitxhr(this.form)"> 
</form> 

,並將此作爲我的Python CGI腳本的輸入字段傳遞到我的文本文件。

fs = cgi.FieldStorage() 
payload = fs.getvalue('item', 'unknown') 

f = open(r'testdoc.txt', 'a') 
f.writelines(payload + "\n") 
f.close() 

這對我所需要的工作有效。我確信有更好的方法去做,但這是我現在所擁有的。

相關問題