通过ajax将json对象从jsp传递给javascript

时间:2013-09-30 15:20:31

标签: java javascript ajax jsp

如何通过ajax将json值从jsp传递给javascript作为对象? 我不能在jsp中使用全局js变量,因为这会导致json内容在页面源中可见

以下是我想要实现的方案:

  • jsp的url在浏览器中打开。
  • 正在scriptlet中创建数据并转换为JSON格式
  • json被“发送”到javascript作为对象

从上面的场景中,我知道javascript必须启动对jsp的ajax调用。 这个问题,jsp的代码将被调用2次:

  • 在浏览器中打开页面时 - 准备好数据
  • 在每个ajax调用上将再次调用相同的代码

约束:没有jquery,没有其他lib,没有servlet,没有额外的jsps。 :(

编辑:

还有一个问题,我需要将多个 json对象传递给javascript 我无法用response.getWriter().write();

来做到这一点

我不认为连接所有json对象并发送是正确的解决方案。

在javascript http.responseText中解析收到的对象将是压倒性的。

1 个答案:

答案 0 :(得分:0)

为什么你需要ajax?如果你知道你需要从服务器填充一些东西到jsp页面,你可以通过scriplets本身来做到这一点:

EX

<%@ page import="com.mypackage.PersonDAO" %>
<html>
<body>
<table>
<th>Name</th><th>Email</th><th>Contact</th>

<%
List<Person> myList = PersonDAO.getAllPersons();
for(Person person:myList)
{ 

%>
<tr>
<td><%=person.getName()%></td>
<td><%=person.getEmail()%></td>
<td><%=person.getContact()%></td>
</tr>
<%}%>
</table>
</body>
</html>

这是一个非常简单的例子。您可以使用JSTL .. :)执行更复杂的操作。

所以没有jquery,没有Servlet,没有ajax,没有额外的jsp:)

<强>更新

由于在页面加载之前需要javascript中的数据,因此可以使用jQuery的holdReady()方法。

$.holdReady( true );
$.get( url, function() {
// Perform something
$.holdReady( false );
});

请参阅但是所有现代浏览器都有开发人员工具,如firebug for mozilla,因此任何ajax调用都会被他们捕获。你可以保护它们的唯一方法是加密它们......这会让你感到复杂......如果你能解释你想要实现的场景,我可以想出来......