2010-05-30 91 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());