2011-11-03 2 views
0

그래서 다른 드롭 다운 사용자를 선택할 때 양식 텍스트 상자를 업데이트하는 데 사용하려고하는이 코드가 있습니다.내 텍스트 상자 (AJAX!)에 값을 삽입하는 Javascript 가져 오기

<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> 
+0

... 그래서, 또는 그것을해야하고 있지 아니는 것이 무엇을하고있다 :

귀하의 코드는이 같은 단순화 할 것인가? "내 양식 텍스트 상자 업데이트"가 의미하는 바를보다 정확하게 설명하십시오. 또한, 여기에 일종의 템플릿 엔진을 사용하고 있다고 가정하고, 그 발췌 문장 중간에있는 Python이 실제로 실행되고 결과가 보간됩니까? 템플릿 엔진에 대해서도 언급 할 수 있습니다. 실제 AJAX 작업에 관해서는 jQuery와 같은 라이브러리 사용을 고려 했습니까? –

+0

텍스트 상자에 서버의 값을 채워야합니다. 나는. 해당 사용자의 정보로 옵션 값을 선택하면 해당 정보가 사전로드되어 해당 정보를 편집하고 다시 제출할 수 있습니다. 템플릿 엔진을 사용하지 않고 mod_python과 Python Server Pages 만 사용하고 있습니다. –

답변

2

내가 심각하게 클라이언트를 사용하여 이동 고려할 jQuery 같은 자바 스크립트 라이브러리 :

여기에 코드입니다.

<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> 
관련 문제