JSP вызов сервлета после ответа не работает

У меня есть динамическое веб-приложение . Моя программа заключается в том , что пользователь вводит термин поиска, и в ответ получит список документов, содержащих термин с флажком для каждого термина для пользователя, чтобы проверить, является ли этот документ релевантным или нет.

Моя проблема заключается в том, как я могу отправить значения контрольного списка в мой сервлет, как мой сервлет будет вызван после первого ответа. Я думал о создании другого сервлета, который будет получать значения контрольного списка , но я понятия не имею
как я это назову.

это бит моего кода сервлета

  String query= req.getParameter("query") ;

          PrintWriter out = resp.getWriter();

          if(result.isEmpty())
          {out.println("<p> No search result found</p>"); }
          else
          {
          out.println("<table style="+"width:100%"+">");
          out.println("<tr> <td> <p> "+result.size() +"  documents found </p></td>");
          out.println("<td> Relevant </td></tr>");
        for(String word : result.keySet())
              {String regex = "b.htmlb";
              String content = word.replaceAll(regex, "");
              out.println("<tr> <td>");
              out.println("<p>");
              out.println(" <a href="+target_dir+"/"+word+">"+content+"</a>");
              out.println("</p>");
              out.println("</td> <td>");
             out.println(" <input type="+"checkbox name="+word+">");
              out.println("</td></tr>");
              }

         out.println( "</table>");}
         // out.println(query);
         out.close();

это немного моего html кода:

<html>
<head>
 <script>
       function sendValues(param){
             xmlHttp = new XMLHttpRequest();
             xmlHttp.onreadystatechange=callback;
             var  url="servlet"+"?query="+
                document.getElementById("search").value ;
             xmlHttp.open("GET",url,true);
             xmlHttp.send();
         }
         function callback() {
             if(xmlHttp.readyState==4 && xmlHttp.status==200) {
                 var value = xmlHttp.responseText;
                 document.getElementById("searchresult").innerHTML = value;
                }
                }
    </script>


</head>
<div id="resultArea"></div>

<body>

<div class="form-wrapper">
    <input type="text" id="search" name="query"  placeholder="Search for..." required>
    <input type="button" value="search"  id="submit" onclick="sendValues()"/>&nbsp;
</div>
<div class="panel" id="searchresult"> </div>    
</body>
</html>

образец моих выходных данных :

1 ответ

  1. Под результатами может быть кнопка, вызывающая функцию, которая отправляет данные для флажков

    var value = xmlHttp.responseText;
    value += '<button type="button" class="relevence">Set Relevant</button>';
    document.getElementById("searchresult").innerHTML = value;
    

    прикрепите прослушиватель событий для щелчка

    document.querySelector('#searchresult').addEventListener('click', function(e){
        if (e.target.className == 'relevence'){
            var arguments = '';
            var checked = document.querySelectorAll('#searchresult :checked');
            var len = checked.length
            if (len == 0) return;
            for (var i = 0; i < len; i++){
                arguments += checked.getAttribute('name') + '=on&'
            }
            xmlHttp = new XMLHttpRequest();
            xmlHttp.onreadystatechange=callback;
            var  url="otherservlet?"+arguments;
            xmlHttp.open("GET",url,true);
            xmlHttp.send();
            function callback() {
                if(xmlHttp.readyState==4 && xmlHttp.status==200) {
                    console.log(xmlHttp.responseText);
                }
            }
        }
    });
    

    просто выполните цикл через get параметры, чтобы получить слова, которые были проверены.

    ===============================================

    Вы забыли ?начать строку запроса

    var  url="servlet"+"?query="+
         encodeURIComponent(document.getElementById("search").value) ;