2012-01-28 90 views
2

我創建了一個JSP應用程序,該應用程序基於用戶搜索(使用lucene)獲取結果。我將結果存儲在Bean中。在jsp中創建json對象並使用jQuery使用它

我還使用Jquery Ajax來顯示結果。

$.ajax({ 
    url : "search.jsp", 
    data : "search=test", 
    success : function(html) { 
     ("#search_results").hide().html(html).fadeIn(1500); 
    } 
}); 

search.jsp的

for (int i = 0; i < size; i++) { 
    out.println(searchResult.get(i).getHTML()); 
} 

這是工作正常,但是我想使它返回一個JSON對象jQuery來改變它,然後讓JQuery的分析對象並顯示結果

我不確定如何做到這一點,因爲我是JSON對象和JSP的新手。 我可能做這樣的事情

JSONObject json = new JSONObject(); 
json.put("title", "TITLE_TEST"); 
json.put("link", "LINK_TEST"); 

但我不知道如何回到json將jQuery然後讓jQuery的解析

任何幫助表示讚賞:)

+0

[從Servlet到Javascript/JSP頁面返回JSON響應](http://stackoverflow.com/questions/6154845/returning-json-response-from-servlet-to-javascript-jsp-page) – Rafay 2012-01-28 15:23:14

回答

7

對象下面是an example您可能需要看着。基本上,你的JSP頁面可能是這樣的:

<%@page contentType="text/html; charset=UTF-8"%> 
<%@page import="org.json.simple.JSONObject"%> 
<% 
    JSONObject json = new JSONObject(); 
    json.put("title", "TITLE_TEST"); 
    json.put("link", "LINK_TEST"); 
    out.print(json); 
    out.flush(); 
%> 

,並在客戶端上:

$.ajax({ 
    url : 'search.jsp', 
    data : { search: 'test' }, 
    dataType: 'json', 
    success : function(json) { 
     alert(json.title); 
    } 
}); 

這裏甚至more examples

+1

非常感謝,我不得不把jQuery.parseJSON(json);在成功功能。謝謝:) – Decrypter 2012-01-28 15:40:48

+1

@Decrypter,在您的JSP頁面中將'Content-Type'響應頭設置爲'application/json'而不是text/html,您不需要這樣做。 – 2012-01-28 15:42:09

2

最終它通過http被傳送。所以,創建一個json對象不會有太大的幫助。

我不是java專家,但你可以創建一個簡單的字符串,它與json結構相匹配,然後在客戶端解析它。

string s = { "title": "testTitle", "link" : "testLink"} 
out.println(s) 

這將這樣的伎倆。

編輯:通過觀察Darin的答案,

包括這在你的Java代碼,

​​
1

這爲我工作:

%> 
String json = "{ \"title\": \"testTitle\", \"link\" : \"testLink\"}"; 
response.getWriter().write(json); 
response.getWriter().flush(); 
response.getWriter().close(); 
<% 

我用它來養活easyui-數據網格。 response.getWriter().write(json)工作,但out.println(json)沒有,雖然他沒有拋出任何例外。而且內部引號也必須是雙引號,所以有必要用'\'來掩蓋它們。

1

相當簡單的方法是使用標籤庫 - JSON是這樣的:

<%@ taglib prefix="json" uri="http://www.atg.com/taglibs/json" %> 

然後你就可以使用JSON標籤來創建它列表:

<json:array items="${someObject.someList}" var="oneRow"> 
<json:object> 
    <json:property name="username" value="${oneRow.username}"/> 
    <json:property name="password" value="${oneRow.password}"/> 
    <json:property name="email" value="${oneRow.email}"/> 
</json:object> 

以上jsp何時執行將O/P如下:

[ 
{"username":"varun","password":"*****","email":"[email protected]"}, 
{"username":"ved","password":"*****","email":"[email protected]"}, 
{"username":"von","password":"*****","email":"[email protected]"} 
] 

那就是所有人!

相關問題