使用 XHR 更新服务器文件并将选项添加到 html 选择
Using XHR to update a server file and add option to html select
我正在尝试让输入字段将文本添加到服务器上的文件中,并将其动态添加到网页上的选择元素中,但它的效果不佳。目前我收到一个错误,指出 e1 为空,并且文本未附加到我的 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() 需要一个可迭代的参数'"。在我的Python CGI脚本中,如何将用户在表单中输入的数据通过POST请求上传的文件保存到磁盘?
看起来值确实被传递了,但也许我没有正确提取数据。f = , f.writelines = , fileitem = FieldStorage('userfile', None, 'sghjsjh')
谢谢
您忘记将id
添加到第一个input
字段中!它应该是:
<input id="item" name="item" type="text" value="" />
而不是
<input name="item" type="text" value="" />
只是为了任何过来看看这个并想知道答案的人,在玩了几个小时后,我终于能够通过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()
这对我需要它做的事情有用。我相信有更好的方法可以做到这一点,但这就是我现在所拥有的。
- 在Internet Explorer中,向所选内容添加选项不起作用
- 向html选择元素添加选项
- 使用docment.createElement向元素添加选项
- 在带有 bootbox 的自定义对话框中添加选项以选择表单控件.js在 ASP.NET MVC 中
- 具体化选择-不'动态添加选项时不起作用
- Chrome:在用户打开一个选择后添加选项
- 动态添加选项以选择多个JQuery插件
- 在HTML5、CSS、JavaScript中添加选项选择器,类似于移动应用程序中的选项设置
- 向选择框添加选项(如果尚未列出该选项)
- 添加选项以使用 javascript 从 json 文件中选择字段
- 在对象创建器中向 DOM 添加选项
- ExtJS 动态添加选项卡
- 在传单图层组中为空白图块图层添加选项
- 从数组或对象添加选项值和内部 HTML
- 在单击按钮时向高图表添加选项
- 如何添加选项来调整引导盒警报的大小
- jquery- 在<选择>中添加<选项>标签
- 基础6:如何使用jquery添加选项卡
- 添加选项卡窗格后引导选项卡下拉列表不起作用
- 如何向 JavaScript 创建的下拉菜单添加选项