AJAX для заполнения текста типа ввода - PullRequest
0 голосов
/ 31 мая 2010

У меня есть <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 Ответ

2 голосов
/ 31 мая 2010

Очевидно, что ваш запрос возвращает только один результат ( WHERE ID = ... ), который вы хотите поместить в текстовое поле.

Странные вещи:

  • На странице, которую вы вызываете через AJAX, печатается HTML-код, но вы пытаетесь использовать его как innerHTML элемента.
  • Кажется, вы хотите добавить вход больше, чем заполнение существующего. Почему у него другое имя / имя?

Возможно вместо:

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

Вы хотите сделать:

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

Но тогда вам нужно будет возвращать только результат запроса в вашем JSP, а не HTML-код:

out.print(object.getTimeFrom());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...