2016-05-03 13 views
0

サーブレットからJSON配列を受け取り、データをテーブルに追加しようとしています。 しかしJSONやテキストはjspには来ません。私は多くのことを試しました。ここに私のJSPです

<%@ page contentType="text/html;charset=UTF-8" language="java" %> 
<html> 
<head> 
    <title>Search a User</title> 
    <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css"> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script> 
    <script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script> 
    <script type="text/javascript"> 
     $(document).ready(function() { 
      $('#search1').click(function() 
      { 
       var searchdata = $("#searchword").val(); 
       $.ajax({ 
        type: "GET", 
        url: "Search", //this is my servlet 
        data: {searchword :searchdata }, 
        success: function(data){ 
         alert(data); 
        } 
       }); 
      }); 

     }); 
    </script> 
</head> 
<body> 
<form method="post" class="form-horizontal"> 
    <fieldset> 


     <div class="form-group"> 
      <label class="col-md-4 control-label" for="searchword">Search a User</label> 
      <div class="col-md-5"> 
       <input id="searchword" type="text" placeholder="Add User's name" class="form-control input-md" required=""> 

      </div> 
     </div> 

     <div class="form-group"> 
      <label class="col-md-4 control-label" for=""></label> 
      <div class="col-md-3"> 
       <button id="search1" class="btn btn-block btn-success">Search</button> 
      </div> 
     </div> 

    </fieldset> 
</form> 
</body> 
</html> 

ここで私は成功関数が働いていることを確認しようとしています。しかし、警告は機能しません。デモ用にサーブレットから取得する文字列を使わずにアラートを追加しました。しかし、彼らはまた働かなかった。私は、JSON配列とサーブレットがの検索ワードをlog4jログに取得しているのを見ることができるので、私の誤りがJSP側にあると確信しています。しかし、ここでもサーブレットを追加することを確認してください。

import com.google.gson.JsonArray; 
import com.google.gson.JsonObject; 
import hsenid.DBConnector; 
import org.apache.logging.log4j.LogManager; 
import org.apache.logging.log4j.Logger; 

import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
import java.io.IOException; 
import java.io.PrintWriter; 
import java.sql.Connection; 
import java.sql.PreparedStatement; 
import java.sql.ResultSet; 
import java.sql.SQLException; 

public class Search extends HttpServlet { 
    private static final Logger logger = LogManager.getLogger(Search.class); 


    @Override 
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 

     resp.setContentType("application/json"); 
     PrintWriter out = resp.getWriter(); 
     PreparedStatement preparedStatement = null; 
     ResultSet resultSet = null; 
     String username = req.getParameter("searchword"); 
     DBConnector dbpool = (DBConnector) getServletContext().getAttribute("DBConnection"); 
     JsonArray jsonArray = new JsonArray(); 
     logger.info(username); 
     try { 
      Connection myConn = dbpool.getConn(); 
      String likeQuery = "Select * from userdetails WHERE username LIKE ?"; 
      preparedStatement = myConn.prepareStatement(likeQuery); 
      preparedStatement.setString(1, "%" + username + "%"); 
      resultSet = preparedStatement.executeQuery(); 

      while (resultSet.next()) { 
       JsonObject jsonObject = new JsonObject(); 
       jsonObject.addProperty("firstName", resultSet.getString("fname")); 
       jsonObject.addProperty("lastName", resultSet.getString("lname")); 
       jsonObject.addProperty("dob", resultSet.getString("dob")); 
       jsonObject.addProperty("country", resultSet.getString("country")); 
       jsonObject.addProperty("email", resultSet.getString("email")); 
       jsonObject.addProperty("mobile", resultSet.getString("mnumber")); 
       jsonObject.addProperty("username", resultSet.getString("username")); 

       jsonArray.add(jsonObject); 

      } 
      logger.info("JSON ARRAY Created"); 

      logger.info(jsonArray.toString()); 
      resp.getWriter().write(jsonArray.toString()); 
      out.println(jsonArray); 
     } catch (SQLException e) { 
      logger.error(e.getMessage()); 
     } 

    } 
} 
+1

ブラウザのコンソールエラーを参照してください。 Firefoxでコンソールを開くには 'CTRL + SHIFT + J' –

+0

Thanks Ataur。その瞬間、私はあなたの質問にどう答えるか分からず、火かき棒について知りました。質問は解決しました:) –

+1

乾杯。 @Menuka ishan :) –

答えて

1

あなたは二回結果JSON配列を作成しているので、内容は有効なJSONレスポンスではない、とjQueryはそれを解析することはできません。

resp.getWriter().write(jsonArray.toString()); 
out.println(jsonArray); // out is resp.getWriter() 

だから、単純に二行を削除します。

このようなエラーをさらに診断するには、$.ajaxコールにerrorコールバックを追加して、エラーが表示された場合は開発者コンソールを確認する必要があります。

+0

ありがとうございました:) それは働いた。 –

関連する問題