让Javascript将值插入我的文本框(AJAX!)
所以我有这个代码,当我选择一个不同的下拉用户时,我试图用它来更新我的表单文本框 代码如下:让Javascript将值插入我的文本框(AJAX!),javascript,python,html,ajax,xmlhttprequest,Javascript,Python,Html,Ajax,Xmlhttprequest,所以我有这个代码,当我选择一个不同的下拉用户时,我试图用它来更新我的表单文本框 代码如下: <script type="text/javascript"> document.getElementById("useruname").onchange = function() { var selecteduname = this.value; } var xmlhttp; function loadXMLDoc() { if (window.XMLHttpRequest) {
<script type="text/javascript">
document.getElementById("useruname").onchange = function() {
var selecteduname = this.value;
}
var xmlhttp;
function loadXMLDoc()
{
if (window.XMLHttpRequest)
{
xmlhttp=new XMLHttpRequest();
}
else
{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
}
function updateAdduser()
{loadXMLDoc();
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
var json = xmlhttp.responseText;
var fields = JSON.parse(json);
Object.keys(fields).forEach(function (name) {
var input = document.getElementsByName(name);
input.value = fields[name];
});
}
}
xmlhttp.open("GET", "ajaxuseradd.psp?=", true);
xmlhttp.send();
}
</script>
<form action="adduser.psp" method="get">
<fieldset>
<label for="uname">Username:</label>
<select name="uname" id="useruname" onChange="updateAdduser();">
<%
import MySQLdb
db = MySQLdb.connect("localhost", "login", "password", "somethingelse")
c = db.cursor()
c.execute("""SELECT user from employees;""")
tup = c.fetchall()
tupstr = str(tup)
tupstr = tupstr.replace("(", "").replace("'", "").replace(")", "").replace(",,", ",").replace("'", "").replace("' ", "'").replace(", ", ",")
tupstr = tupstr.rstrip(",")
numlist = tupstr.split(",")
optionlist = ['<option value="%s">%s</option>' % (x, x) for x in numlist]
options = "\n".join(optionlist)
%>
<%= options %>
</select>
</fieldset>
<fieldset>
<label for="fname">First Name:</label>
<input type="text" name="fname" />
</fieldset>
<fieldset>
<label for="lname">Last Name:</label>
<input type="text" name="lname" />
</fieldset>
<fieldset>
<label for="email">Email:</label>
<input type="text" name="email">
</fieldset>
<>我会认真考虑使用像./p>这样的客户端JavaScript库。 您的代码将简化为以下内容:
<script type="text/javascript">
$("#useruname").change = function() {
var selecteduname = this.value;
}
function updateAdduser()
{
var fields = null;
$.ajax(url: "ajaxuseradd.psp?=",
dataType = 'json',
success: function(data){
fields = data;
Object.keys(fields).forEach(function (name) {
var input = $(name);
input.value = fields[name];
});
}
});
}
</script>
<form action="adduser.psp" method="get">
<fieldset>
<label for="uname">Username:</label>
<select name="uname" id="useruname" onChange="updateAdduser();">
<%
import MySQLdb
db =
c = db.cursor()
c.execute("""SELECT user from employees;""")
tup = c.fetchall()
tupstr = str(tup)
tupstr = tupstr.replace("(", "").replace("'", "").replace(")", "").replace(",,", ",").replace("'", "").replace("' ", "'").replace(", ", ",")
tupstr = tupstr.rstrip(",")
numlist = tupstr.split(",")
optionlist = ['<option value="%s">%s</option>' % (x, x) for x in numlist]
options = "\n".join(optionlist)
%>
<%= options %>
</select>
</fieldset>
<fieldset>
<label for="fname">First Name:</label>
<input type="text" name="fname" />
</fieldset>
<fieldset>
<label for="lname">Last Name:</label>
<input type="text" name="lname" />
</fieldset>
<fieldset>
<label for="email">Email:</label>
<input type="text" name="email">
</fieldset>
... 那么,它是在做不应该做的事情,还是不应该做它应该做的事情?请更准确地说明“更新我的表单”文本框的含义。另外,我假设你在这里使用了一种模板引擎,并且在该片段中间的Python实际上被执行并且结果被插值。您可能还需要提到您的模板引擎。至于实际的AJAX工作,您考虑过使用jQuery之类的库吗?它应该用服务器的值填充文本框。也就是说,当您选择一个包含该用户信息的选项值时,它们将预加载,然后可以编辑并重新提交。我没有使用模板引擎,只使用带有python服务器页面的mod_python。