2015-12-06 2 views
0

Есть ли какие-то ограничения на использование тегов JSP внутри javascript?Есть ли ограничение на использование JSP-тегов внутри Javascript?

У меня есть сценарий вроде этого:

<script> 
<%int ccCount = 0;%> 
var stockData = new Array(); 

for (var i = 0; i < <%=sNum%>; i++)     
{ 
    stockData[i] = {Supplier: "<%=sName[ccCount]%>", CC: <%=cc[ccCount]%>}; 
    <%ccCount++;%> 
} 
<script> 

Каждая строка внутри тегов JSP работал, кроме <% ccCount ++;%>. Мой массив sName и cc продолжал указывать на первый индекс (0), может ли кто-нибудь сказать мне, что пошло не так, и как я могу его исправить?

спасибо.

+2

Вам нужно понять разницу между кодом _server-side_ и кодом _client-side_. – SLaks

+0

О, я держу пари, что это сработало - только ** в скомпилированном сервлете нет цикла **. – Jan

+1

2 не взаимодействуют, как вы, кажется, ожидаете. JSP будет запускаться полностью на сервере (выводит 'sNum',' sName [0] 'и' cc [0] ', а затем увеличивать' ccCount' один раз). Только после этого JavaScript начнет работать, поскольку страница загружается в клиент/браузер (итерация 'i' до 1 меньше, чем вывод' sNum', заполняя 'stockData'). –

ответ

1

JSP выполнен на сервере. Он отправляет полученный Javascript в браузер, где выполняется эта часть.

Что JSP/Java видит:

int ccCount = 0; 
=sName[ccCount]; 
=cc[ccCount]%>}; 
ccCount++; 

Полученный JavaScript является (предполагается, что cc[ccCount] будет 42 и sNum 12345)

<script> 
var stockData = new Array(); 

for (var i = 0; i < 12345; i++)     
{ 
    stockData[i] = {Supplier: "some value", CC: 42}; 
    43 
} 
<script> 

Поскольку JSP выполняется на sevrer, он не является частью из цикла for, который существует только в браузере.

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