繁体   English   中英

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

[英]Passing json object via ajax from jsp to javascript

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

这是我要实现的方案:

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

从以上情况来看,我知道javascript必须启动对jsp的ajax调用。 与此有关的问题是,jsp的代码将被调用两次:

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

约束:没有jquery,没有其他库,没有servlet,没有其​​他jsps。 :(

编辑:

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

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

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

为什么这里需要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调用都将被它们捕获。 您可以保护它们的唯一方法是对它们进行加密..这将使您的事情变得复杂...如果您可以解释您要实现的方案,也许我可以提出来。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM