使用XHR更新服务器文件并添加选项到html选择

时间:2013-10-27 01:04:00

标签: javascript python html xmlhttprequest

我正在尝试让输入字段将文本添加到服务器上的文件中,并将其动态添加到网页上的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')

由于

2 个答案:

答案 0 :(得分:1)

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

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

而不是

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

答案 1 :(得分:0)

对于那些过来看到这个并希望在玩了几个小时之后想知道答案的人我终于能够通过python CGI脚本更新我的文本文件并且感谢kol他得到了所以我可以输入我的选择字段中的一个选项,因为我完全错过了一个关键字段。

我需要将原始网页更新为以下内容:

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

这适用于我需要它做的事情。我确信有更好的方法可以做到这一点,但这就是我现在所拥有的。