2016-05-06 38 views
0

を働いていません。私のプログラムは、ユーザーが検索用語を入力し、その文書が関連しているかどうかを確認するために、ユーザーが検索語を入力し、それに応答して、用語を含む文書のリストを各用語ごとにチェックボックスで取得することです。JSPは応答の後、私は動的なWebアプリケーションを持っている

私の問題は私のサーブレットが最初の応答の後に呼ばれるように起こっている方法を、私は私のサーブレットにチェックリスト値を送信することができる方法です。私はチェックリストの値を取得しようとしている別のサーブレットを作成しますが、私はそれを呼び出す方法はありません。

これは私のサーブレットコードのビットが

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.html\\b"; 
       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> 

sample of my output :

答えて

0

チェックボックスのデータを提出する機能

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

チェックした単語を取得するにはGETパラメータによってクリック

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); 
      } 
     } 
    } 
}); 

のイベントリスナーだけループを添付してください。

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

あなたは、それは私のコードであるクエリ文字列

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

を開始するために?を忘れてしまった私は、私はそれを追加するのを忘れて推測し、私の問題は後にどのように私はチェックリスト値を送信するために、再びサーブレットを呼び出すことができ提出するのですか? – Sabd

+0

まだボタンセットを押すと関連する何も起こらない – Sabd

関連する問題