2015-05-27 3 views
0

Я хочу хранить строки mysql в переменной массива javascript. Я использую jsp для серверной части.Как сохранить строку mysql в переменной javascript с помощью jsp

Я попробовал это тремя способами. Все три не работают. Нужна помощь.

Попытка 1-:

<script> 
     var name = []; 
    <% 
     st=con.prepareStatement("select name from company"); 
     rs=st.executeQuery(); 
     while(rs.next()){ 
      String s = rs.getString(1); 
    %> 
      name.push(<%=s%>);   
    <% 
     } 
    %> 
</script> 

Попытка 2-:

<script> 
     var name = []; 
    <% 
     st=con.prepareStatement("select name from company"); 
     rs=st.executeQuery(); 
     while(rs.next()){ 
    %> 
      name.push(<%=rs.getString(1)%>);    
    <% 
     } 
    %> 
</script> 

Попытка 3-:

<script> 
     var name = []; 
    <% 
     st=con.prepareStatement("select name from company"); 
     rs=st.executeQuery(); 
     while(rs.next()){ 
    %> 
      name.push(<%out.print(rs.getString(1));%>);   
    <% 
     } 
    %> 
</script> 

Все три попытки показали тот же результат и ошибок после обработки.

Интерпретированный Код:

<script> 
     var name = []; 
     name.push(tcs); 
     name.push(wipro); 
</script> 

Ошибка:

ReferenceError: tcs is not defined 

+0

Посмотрите на сгенерированный код. Почему вы думаете, что это должно сработать? Перед выходом JS вам нужно избегать строк. – SLaks

+0

@SLaks: Не могу вас достать. Я ноб. – Ramvignesh

+0

Попробуйте положить кавычки, 'name.push (" <%=s%> ")' – dave

ответ

1

Вы должны добавить " вокруг вашей строки, также вы Javascript должен кодировать (я думаю, что Апач библиотека что сделают это для вас):

<script> 
     var name = []; 
    <% 
     st=con.prepareStatement("select name from company"); 
     rs=st.executeQuery(); 
     while(rs.next()){ 
      String s = StringEscapeUtils.escapeJavaScript(rs.getString(1)); 
    %> 
      name.push("<%= s %>");   
    <% 
     } 
    %> 
</script> 

Попробуйте использовать эту библиотеку Apache, чтобы избежать строки Java на основе яваскрипта правил: StringEscapeUtils

Javascript пытается интерпретировать name.push(tcs);tcs как переменную, которая в данном случае tcs не объявлена ​​или инициализирована он не определен , Вместо этого вы хотите, чтобы javascript интерпретировал tcs как строку, поэтому вам нужны котировки вокруг нее "tcs" или в вашем случае "<%= s %>".

+0

спасибо. Я попробовал добавить' '' like ''"' + <%= s %> + «"» '. он показал ту же ошибку. вот и я решил задать вопрос здесь. cudn't получить то, что я хотел, даже после того, как я googled. – Ramvignesh

+0

@Ramvignesh не добавлять '' '' '' '' '' '' 'именно так, как у меня есть это в моем ответе ... – brso05

+0

@Ramvignesh' name.push ("<%= s %>"); 'точно так же. – brso05

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