2010-05-30 60 views
0

我有text类型,我想从使用AJAX数据库中的值来填充的<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(); 
} 
%> 

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

+0

你的问题是不容易理解。 – stagas 2010-05-30 22:10:09

+0

我喜欢将代码隐藏在可用区域最右端的方式。 – Amarghosh 2010-05-31 05:10:31

+0

你想要什么 - 一个下拉列表或多重选择项目列表或只是一个有序/无序列表? – Amarghosh 2010-05-31 06:47:08

回答

2

很明显,您的查询只返回一个结果(WHERE ID = ...),您希望将其放入文本字​​段中。

奇怪的事情:

  • 您呼叫的页面通过AJAX是priting HTML代码,但是你要使用它作为一个元素的innerHTML。
  • 看来你要添加填充相比现有的输入了。为什么它有不同的ID /名称?也许不是

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

你想做的事:

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

但随后你需要在你的JSP返回查询的只是结果,而不是HTML代码:

out.print(object.getTimeFrom());