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

通过ajax将json对象从jsp传递到javascript,java,javascript,ajax,jsp,Java,Javascript,Ajax,Jsp,如何通过ajax将json值作为对象从jsp传递到javascript? 我不能在jsp中使用全局js变量,因为这将导致json内容在页面的源代码中可见 以下是我想要实现的场景: jsp的url在浏览器中打开 正在以scriptlet创建数据并转换为JSON格式 json作为对象“发送”到javascript 从上面的场景中,我了解到javascript必须启动对jsp的ajax调用。 问题在于,jsp代码将被调用2次: 在浏览器中打开页面时-准备好数据 在每次ajax调用中,都会再次调用

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

以下是我想要实现的场景:

  • jsp的url在浏览器中打开
  • 正在以scriptlet创建数据并转换为JSON格式
  • json作为对象“发送”到javascript
从上面的场景中,我了解到javascript必须启动对jsp的ajax调用。 问题在于,jsp代码将被调用2次:

  • 在浏览器中打开页面时-准备好数据
  • 在每次ajax调用中,都会再次调用相同的代码
约束:没有jquery,没有其他lib,没有servlet,没有其他JSP:(

编辑:

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

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


在javascript
http.responseText
中解析接收到的对象将非常困难。

这里为什么需要ajax?如果您知道需要将一些内容从服务器填充到jsp页面,可以通过scriplets本身来完成:


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

您可以将一个参数传递给dif举个url和ajax的例子。当你说没有servlet时,jsp最终被编译成一个servlet。@Tito Cheriachan我知道,我的意思是没有引入任何其他servlet:)你是否尝试过@alkis的建议,这样你可以防止两次执行。另外:“我不能在jsp中使用全局js变量,因为这将导致json内容在页面源代码中可见”,如果您依赖AJAX调用作为某种安全机制,因此用户无法看到json对象的结构,你在浪费时间;在任何现代浏览器中查看AJAX调用都是非常琐碎的。正如我所说,我需要将数据传递给javascript函数。在将数据传递给javascript函数后,你将如何处理这些数据?请参阅。。目前,你的问题并不能证明需要将数据传递给javascript函数。@yuris详细解释e您需要解决的实际问题,而不仅仅是您认为您想如何解决它。可能是您选择的方法不是最有效的,而且有一种更简单的方法可以解决。例如,如果JSON在页面加载和AJAX调用之间不发生变化,就不需要进行任何AJAX调用。@Anthony Grist,我需要解释一下将多个json对象从jsp转换为javascript。我不希望json在页面的源代码中可见。json不会被更改。@DarkHorse正如我在文章中所说的,没有jquery
<%@ 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>
$.holdReady( true );
$.get( url, function() {
// Perform something
$.holdReady( false );
});