2013-09-30 10 views
0

Как передать значения json из jsp в javascript как объект через ajax?
Я не могу использовать глобальные Js переменные в JSP, поскольку это приведет к содержанию JSon быть видимым в источнике страницыПередача объекта json через ajax из jsp в javascript

Вот сценарий, который я хочу добиться:

  • URL из JSP открыт в браузер.
  • данных создается в скриптлете и превратили в формате JSON
  • JSON является «послал» в JavaScript как объект

Из выше сценария, я понимаю, что Javascript должен инициировать вызов Аякса Jsp. Проблема с этим кодом, который JSP будет вызываться в 2 раза:

  • При открытии страницы в браузере - данные подготавливаются
  • на каждом Ajax вызова тот же код будет вызываться снова

Ограничения: нет jquery, нет других libs, нет сервлетов, нет дополнительных jsps. :(

EDIT:

Существует еще одна проблема, мне нужно пройти множественным JSon объекты в Javascript
я не буду в состоянии сделать это с response.getWriter().write();

Я не думаю, что конкатенации. все объекты JSON и отправка правильное решение.

разбор полученного объекта в JavaScript http.responseText будет подавляющим.

+0

Вы можете передать чтобы различать случай url и ajax. – alkis

+0

Когда вы не говорите никаких сервлетов, jsp компилируется в сервлет наконец. – cherit

+0

@ Тито Черячан Я знаю это, я имею в виду, не вводя никаких других сервлетов :) – yuris

ответ

0

Зачем вам нужен аякс? Если вы знаете, что вам нужно заполнить некоторые вещи с сервера на 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, нет сервлетов, нет Аякса и каких-либо дополнительных JSP-:)

UPDATE

Так как вы хотите данные в вашем javascript перед загрузкой страницы вы можете использовать метод holdReady() jQuery.

См но все современные браузеры имеют средство разработки, такие как поджигатель для Mozilla так любой Аякс вызов, сделанный будет захвачен ими. Единственный способ, которым вы можете их защитить, - это зашифровать их ... что усложнит вам ситуацию ... ЕСЛИ вы можете объяснить сценарий, который вы пытаетесь реализовать, может быть, я могу придумать это.

+0

Как я уже сказал, Мне нужно передать данные в функцию javascript. – yuris

+0

И что вы собираетесь делать с данными после передачи их функции javascript? См. .. В настоящее время ваш вопрос не оправдывает необходимость передачи данных в функцию javascript. – DarkHorse

+0

@yuris Объясните в деталях актуальную проблему, которую вам нужно решить, а не только то, как вы думаете, что хотите ее решить. Возможно, ваш выбранный подход не самый эффективный, и есть более простой способ сделать это. Например, если JSON не будет меняться между загрузкой страницы и вызовами AJAX, нет необходимости делать какие-либо вызовы AJAX. –

Смежные вопросы