【问题标题】:ajax to populate an input type textajax 填充输入类型文本
【发布时间】: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 注入攻击……

标签: ajax jsp


【解决方案1】:

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

奇怪的事情:

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

也许不是:

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

你想做的:

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

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

out.print(object.getTimeFrom());

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-18
    • 1970-01-01
    • 2016-01-22
    • 2020-03-27
    • 2013-12-07
    • 1970-01-01
    相关资源
    最近更新 更多