我创建了一个JSP应用程序,它根据用户搜索(使用lucene)获取结果。我将结果存储在Bean中。
我也在使用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 :(得分:9)
您可以查看以下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 :(得分:2)
最终它被转移到http。因此,创建一个json对象不会有太大帮助。
我不是java专家,但您可以创建一个与json结构匹配的简单字符串,然后在客户端解析它。
像
string s = { "title": "testTitle", "link" : "testLink"}
out.println(s)
这样就可以了。
编辑:看到达林的答案,
在您的java代码
中包含此内容<%@page contentType="application/json; charset=UTF-8"%>
答案 2 :(得分:1)
这对我有用:
%>
String json = "{ \"title\": \"testTitle\", \"link\" : \"testLink\"}";
response.getWriter().write(json);
response.getWriter().flush();
response.getWriter().close();
<%
我用它来提供easyui-datagrid。 response.getWriter().write(json)
工作,但out.println(json)
并没有,但他没有抛出任何例外。内部引号也必须加倍,因此有必要用“\”掩盖它们。
答案 3 :(得分:1)
非常简单的方法是使用taglib - 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":"johndoe@sssdotcom"},
{"username":"ved","password":"*****","email":"johndoe1@sssdotcom"},
{"username":"von","password":"*****","email":"johndoe2@sssdotcom"}
]
多数民众议员!