ajax填充输入类型文本

时间:2010-05-30 21:35:21

标签: ajax jsp

我有一个<input>类型text,我希望使用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();
}
%>

我想只获取从数据库填充的输入类型文本中的值,因为之后我将能够更改它。

1 个答案:

答案 0 :(得分:2)

显然,您的查询只返回一个要放在文本字段中的结果( WHERE ID = ... )。

奇怪的事情:

  • 您通过AJAX调用的页面是引用HTML代码,但您正在尝试将其用作元素的innerHTML。
  • 您似乎想要添加输入而不是填充现有输入。为什么它的ID /名称不同?

也许代替:

document.getElementById('st').innerHTML = selects5;

你想这样做:

document.getElementById('st').value = selects5;

但是,您需要在JSP中仅返回查询结果,而不是HTML代码:

out.print(object.getTimeFrom());