从服务器端获取值并分配给JavaScript变量

时间:2013-09-16 07:50:20

标签: java javascript

我在request对象中有字符串数组值,我检索它如下,

<%
                                        if (request.getAttribute("categoriesList") != null) {%>
                                        <input id="categoriesList" name="categoriesList" type="hidden" value="<%= (String[]) request.getAttribute("categoriesList") %>"/>
                                            <c:forEach var="categoryName" items="${categoriesList}">
                                                <li><a onclick="getCategoryIndex()" href="#">${categoryName}</a></li>
                                            </c:forEach>
                                        <% }%>

这会将值打印到<li>,但我也有隐藏变量,我想为其赋值,

<input id="categoriesList" name="categoriesList" type="hidden" value="<%= (String[]) request.getAttribute("categoriesList") %>"/>

但是当我使用java脚本打印它们时,

var category= new Array();
        category = $('#categoriesList').val();
        console.log(category);


        for (var i in category) {
            console.log(category[i]);
            }

我明白了,

[Ljava.lang.String;@f2bc8d rechargeWalletRequest.htm:182
[ rechargeWalletRequest.htm:186
L rechargeWalletRequest.htm:186
j rechargeWalletRequest.htm:186
a rechargeWalletRequest.htm:186
v rechargeWalletRequest.htm:186
a rechargeWalletRequest.htm:186
. rechargeWalletRequest.htm:186
l rechargeWalletRequest.htm:186
a rechargeWalletRequest.htm:186
n rechargeWalletRequest.htm:186
g rechargeWalletRequest.htm:186
. rechargeWalletRequest.htm:186
S rechargeWalletRequest.htm:186
t rechargeWalletRequest.htm:186
r rechargeWalletRequest.htm:186
i rechargeWalletRequest.htm:186
n rechargeWalletRequest.htm:186
g rechargeWalletRequest.htm:186
; rechargeWalletRequest.htm:186
@ rechargeWalletRequest.htm:186
f rechargeWalletRequest.htm:186
2 rechargeWalletRequest.htm:186
b rechargeWalletRequest.htm:186
c rechargeWalletRequest.htm:186
8 rechargeWalletRequest.htm:186
d rechargeWalletRequest.htm:186

我应该得到这个值,但它会打印其他东西。

请帮助完成这项工作。

2 个答案:

答案 0 :(得分:1)

您必须为每个输入隐藏语句分配唯一的ID。像这样:

<%
    if (request.getAttribute("categoriesList") != null) {%>
        <c:forEach var="categoryName" items="${categoriesList}">
            <input id="${categoryName}" name="categoriesList" type="hidden" value="${categoryName}"/>
            <li><a onclick="getCategoryIndex()" href="#">${categoryName}</a></li>
        </c:forEach>
<% }%>

然后在jQuery中获取name属性的所有元素,并迭代它们以获取值。

答案 1 :(得分:1)

尝试重新创建场景..实际进入隐藏字段的是哈希码(使用浏览器的开发人员工具来查看它)。尝试返回List而不是String [],然后它将正常工作。