【问题标题】:Bring SQL data to jquery availabletag将 SQL 数据带入 jquery availabletag
【发布时间】:2023-03-17 07:41:01
【问题描述】:

我正在尝试制作自动完成文本框,但如何将 SQL 数据包含到 jquery 可用标签并循环它?我未能根据以下代码执行该功能。任何帮助,将不胜感激!谢谢

这是我的预期输出:Expected Result Demo

jquery 代码错误

我的文本框只列出数据库中的最后一行数据。

<%
    String FRUIT_CODE = "";
    String FRUIT_DESCP= "";
    Vector vFruit     = new Vector();

    TEST.makeConnection();
    String SQL = "SELECT CODE,DESCP FROM TB_FRUIT WITH UR";
    TEST.executeQuery(SQL);     
    while(TEST.getNextQuery())
    {
        FRUIT_CODE  = TEST.getColumnString("CODE");
        FRUIT_DESCP = TEST.getColumnString("DESCP ");
        Vector vRow = new Vector();
       vRow.addElement(FRUIT_CODE);
       vRow.addElement(FRUIT_DESCP);
       vFruit.addElement(vRow);
    }   
    TEST.takeDown();    
   %>

  <html>
  <head>
  <meta charset="utf-8">
  <link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css">
  <script src="//code.jquery.com/jquery-1.10.2.js"></script>
  <script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script>
  <link rel="stylesheet" href="/resources/demos/style.css">

  <script>
  $(function() {
  var availableTags = 
   [{
   <%
     String COMBINE = "";
     String CODE2   = "";
     String DESC1   = "";
     for(int i=0;i<vFruit.size();i++)
     {
        Vector vRow     = (Vector) vFruit.elementAt(i);
            CODE2       = (String) vRow.elementAt(0);
            DESC1       = (String) vRow.elementAt(1);
            COMBINE     += "\"" + CODE2 +"    "+ DESC1 + "\",";     
     }
        COMBINE  = COMBINE.substring(0, COMBINE.length()-1);

       //Combine result = "10000 Apple","20000 Orange", "30000 Mango", "40000 Banana"
    %>

        "value":  <%=CODE2%>,
        "label":  <%=COMBINE%>
    }]; 

   $("#MODEL").autocomplete({
      source: availableTags,
       focus: function (event, ui) {
        event.preventDefault();
        $("#MODEL").val(ui.item.value);
       }
     });
  });
  </script>    

  <body>
       <div class="ui-widget">
         <label for="tags">Tags: </label>
         <input id="MODEL">
       </div>
  </body>
</html>

【问题讨论】:

  • 没有解决办法?
  • I failed to perform the function based on the following code,告诉我们你是怎么失败的?检查您的浏览器控制台是否有任何错误,如果有,也发布这些错误。
  • @VinothKrishnan 请检查。问题已更新

标签: java jquery jsp autocomplete


【解决方案1】:

生成availableTags 的脚本不会为vFruit 向量中的每个值添加新对象,只为最后一个值添加新对象。应该这样打补丁:

var availableTags = [
<%
  String CODE2   = "";
  String DESC1   = "";
  for(int i=0;i<vFruit.size();i++)
  {
    Vector vRow     = (Vector) vFruit.elementAt(i);
    CODE2       = (String) vRow.elementAt(0);
    DESC1       = (String) vRow.elementAt(1);
    if (i > 0) out.print(",");
%>
    {
      "value":  "<%= CODE2 %>",
      "label":  "<%= DESC1 %>"
    }  
<%
  }
%>
]; 

$("#MODEL").autocomplete({
...

顺便说一句。为什么Vector 而不是例如ArrayList?你需要一个线程安全的实现吗?好像不是这样的。

【讨论】:

  • 对不起@Jozef,它们有什么不同的数组列表和向量吗?它们的执行方式相同吗?
  • 参见docs.oracle.com/javase/8/docs/api/java/util/Vector.html - JavaDoc 末尾有以下注释: 从 Java 2 平台 v1.2 开始,该类被改进为实现 List 接口,使其Java 集合框架的成员。与新的集合实现不同,Vector 是同步的。如果不需要线程安全实现,建议使用 ArrayList 代替 Vector。(即可以使用 Vector,但由于同步可能会更慢。)
  • 顺便说一句。我的解决方案有帮助吗?
  • 对不起@Jozef,它不起作用。当我插入一些值时,文本框上没有显示数据列表,
  • 你在浏览器中调试过吗? availableTags 变量包含什么?
猜你喜欢
  • 1970-01-01
  • 2011-09-29
  • 2017-12-15
  • 2014-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-02
  • 1970-01-01
相关资源
最近更新 更多