获取外部.js文件中的请求属性(作为列表发送)

时间:2016-06-28 05:53:31

标签: javascript jquery ajax jsp

我有一个Servlet,它在从SQL获取数据后设置了request属性(它会返回一个List):

request.setAttribute("statsRegionList", statsRegionList);

我有一个下拉内存的jsp文件,下拉内容由另一个请求属性加载。 根据下拉选择,我需要检查'statsRegionList'并获得该特定Region的所需结果,该结果与下拉列表中选择的区域相匹配。

在阅读了一些论坛后,有人提到外部.js文件无法获取请求属性,因此需要在.jsp本身中设置。因此我已经在jsp中设置了:

<body>
<script type="text/javascript">
    var regionList = <%=request.getAttribute("statsRegionList")%>;
</script>

然而,在IE上的控制台上显示错误: SCRIPT1014:无效字符 文件:仪表板,行:625,列:47 (无效字符是@,它作为对象List插入。)

  • 如何访问外部.js文件中的'statsRegionList'?
  • 人们已经提到了Ajax,但我不知道如何使用它。任何代码片段都应该有用。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

霍尔格你是对的。

我找到了解决方案,这就是我所做的。 由于.external js文件无法读取请求属性,因此我从jsp创建了一个全局变量,以便可以在.js文件中使用。 request属性返回一个ArrayList,因此在创建全局变量时它也应该是一个Array格式。

以下是.jsp

的代码段
<script type="text/javascript">
var regions = [
    <c:forEach items="${statsRegionList}" var="region" varStatus="status">
    {region: '${region.name}',              Devices : '${region.DeviceCount}'}
    <c:if test="${!status.last}">
        ,
        </c:if>
    </c:forEach>
];
</script>

这可确保创建对象数组。此外,在外部.js文件中,现在可以访问全局变量var region,并且可以迭代它以查找与下拉列表选择匹配的所需详细信息。 从.jso文件剪切的代码如下:

dropdownSelect = $("#regionSelect option:selected").text();
    var regionsArr = regions;
            if ($.isArray(regionsArr)){
                Object.keys(regionsArr).forEach(function (key) {
                      if(regionsArr[key]['region']== dropdownSelect){
                          var x=document.getElementById('RegionTable').rows;
                            x[0].cells[1].innerHTML=regionsArr[key]['DeviceCount'];                         
                      }
                    });
            }