【发布时间】:2010-05-31 18:20:09
【问题描述】:
我有一个text 类型的<input>,我想使用AJAX 从数据库中填充一个值。
首先,我将我的文本区域定义如下:
<td><input type=text id='st' value=" " name='stname' onclick="donnom();" /></td>
在 javascript 中,我执行以下操作:
xhr5.onreadystatechange = function(){
if(xhr5.readyState == 4 && xhr5.status == 200) {
selects5 = xhr5.responseText;
// On se sert de innerHTML pour rajouter les options a la liste
document.getElementById('st').innerHTML = selects5;
}
};
xhr5.open("POST", "ajaxIDentifier5.jsp", true);
xhr5.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
id = document.getElementById(idIdden).value;
xhr5.send("id=" + id);
在IDentifier5.jsp,我放了下一段代码:
<%
String id = request.getParameter("id");
System.out.println("idDailyTimeSheet ajaxIDentifier5 as is:" + id);
Session s = null;
Transaction tx;
try {
s = HibernateUtil.currentSession();
tx = s.beginTransaction();
Query query = s.createQuery(
"select from Dailytimesheet dailytimesheet " +
"where dailytimesheet.IdDailyTimeSheet=" + id + " ");
for(Iterator it=query.iterate();it.hasNext();) {
if(it.hasNext()) {
Dailytimesheet object=(Dailytimesheet)it.next();
out.print( "<input type=\"text\" id=\"st1\" value=\"" +
object.getTimeFrom() +
"\" name=\"starting\" onclick=\"donnom()\" ></input>");
}
}
} catch (HibernateException e) {
e.printStackTrace();
}
%>
我只想获取从数据库填充的输入类型文本中的值,因为之后我将能够更改它。
【问题讨论】:
-
你的问题不好理解。
-
我喜欢您将代码隐藏在可用区域最右端的方式。
-
你想要什么 - 一个下拉列表或一个多选列表或只是一个有序/无序列的项目列表?
-
这不是您的问题还,但是您直接在数据库查询中使用来自请求的
id,而没有对其进行清理或使用准备好的语句进行除牙。这意味着您的代码很容易受到 SQL 注入攻击……