0

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

这是我想要实现的场景:

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

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

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

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

编辑:

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

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

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

4

1 回答 1

0

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

前任

<%@ 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 );
});

看,但所有现代浏览器都有开发者工具,比如 mozilla 的 firebug,所以任何 ajax 调用都会被它们捕获。你可以保护它们的唯一方法是我对它们进行加密......这会让你的事情变得复杂......如果你能解释你试图实现的场景,我可能会想出它......

于 2013-09-30T16:30:45.457 回答