我试图让输入字段将文本添加到服务器上的文件中,然后动态地将其添加到网页上的select元素中,但是效果不是很好。目前,我收到一个错误消息,即e1为null,并且文本未附加到我的testdoc.txt文本文件中。如果我拿出代码尝试将其写入文本文件,则可以正常工作。我还尝试了不将动态添加到选择字段的情况,以查看它是否会追加到文件中并且不会成功。在firebug中,我确实看到了帖子,并且看到了响应,但是没有将其附加到文件中。以下是我当前代码的摘要。

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()


我什至检查出了这个问题,但是当我使用它制作测试脚本时,我也得到一个空值,“ message ='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',None,'sghjsjh')

谢谢

最佳答案

您忘记了将id添加到第一个input字段!它应该是:

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


代替

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

关于javascript - 使用XHR更新服务器文件并将选项添加到html select,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19613590/

10-12 22:09