2013-07-05 67 views
0

我是使用AJAX和JQuery與Java Servlets的新手。我想生成一個搜索頁面,生成搜索結果列表(如谷歌頁面列表)。我的數據庫查詢工作並返回一個JSONObject或一個JSONArray。通過AJAX和JQuery訪問servlet生成的對象(JSONObjects)

我的代碼不適用於JQUERY。我嘗試了很多不同的版本。基本的錯誤是,搜索後的新頁面只是以數組打印的形式顯示數據。它不識別HTML。

我已經顯示我的代碼下面的數據庫查詢刪除。我嘗試的不同版本是使用各種形式的JSON語法,無論是否使用GSON,都沒有任何成效。

該系統是Linux。

任何意見,將不勝感激,甚至鏈接到一個全面的例子。

search.js

$(document).ready(function(){ 
    $('#searchbutton').submit(function) 
{ 
    var inputdata = searchText:$("#searchtext").val(); 
}; 
$.ajax({ 
    type:"POST", 
    datatype: "json", 
    url:"search", 
    data:inputdata, 
    success: function(data){ 
$("#searchResults").append("<b>data.linkresult</b>") 

     }); 
     }); 

}); 

}); 
}); 

search.java

protected void doGet(HttpServletRequest request, 
    HttpServletResponse response) throws ServletException, IOException 
{ 
PrintWriter out = response.getWriter();  
// reading the user input 
String searchword= request.getParameter("search"); 
String Tmsg = ""; 
Map<String, Object> data = new HashMap<String, Object>(); 


data.put("searchresult", searchword); 


response.setContentType("application/json"); 
response.setCharacterEncoding("UTF-8"); 
response.getWriter().write(new Gson().toJson(data)); 

search.jsp的

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 
<html> 
<head> 
<title>Search for a word</title> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
<script type="text/javascript" src="./js/jquery-1.9.1.js"></script> 
<script type="text/javascript" src="./js/search.js"></script> 
<script type="text/javascript" src="./js/jquery-1.9.1.min.js"></script> 
</head> 
<body> 
<form action="search">   
     Search<br> 
     <div>Word - 
      <input id="searchtext" type="text" name="search" size="40px"> 
     </div> 

     <div> 
      <input id="searchbutton" type="submit" value="Submit"> 
     </div> 

    </form>  




<div id="searchresults"> 

</div> 

結果(只顯示此一行):

{"searchresult":"search example"} 

回答

0

要解析從servlet接收到的Json消息,可以通過執行此類操作來實現此目的。讓我們假設你已經收到以下消息從servlet

{ 「鍵1」: 「VAL1」, 「KEY2」: 「值2」, 「KEY3」: 「VAL3」}

你想讓它被顯示在一個表格中。

success: function(data){ 
var output = '<table>'; 
for (var key in data) { 
    if (data.hasOwnProperty(key)) { 
     output += "<tr>"; 
     output += "<td>" + key + "</td>"; 
     output += "<td>" + data[key] + "</td>"; 
     output += "</tr>"; 
    } 
} 
output += "</table>"; 
$("#searchResults").empty(); 
$("#searchResults").append(output); 

}); 
+0

謝謝。我試過了,但又失敗了。問題與數據的實際傳輸有關,系統無法理解呈現的頁面是html。我認爲這與ajax直接相關,現在是Java中的編碼。 –