首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在外部.js文件中获取请求属性(作为列表发送)

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

Stack Overflow用户
提问于 2016-06-28 05:53:30
回答 1查看 2.6K关注 0票数 1

我有一个Servlet,它在从SQL获取数据之后设置请求属性(它将返回一个列表):

代码语言:javascript
复制
request.setAttribute("statsRegionList", statsRegionList);

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

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

代码语言:javascript
复制
<body>
<script type="text/javascript">
    var regionList = <%=request.getAttribute("statsRegionList")%>;
</script>

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

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

谢谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-29 05:09:58

霍格你说得对。

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

下面是来自.jsp的代码片段

代码语言:javascript
复制
<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区域现在是可访问的,可以迭代查找与下拉选择匹配的所需细节。从.jso文件中截取的代码如下:

代码语言:javascript
复制
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'];                         
                      }
                    });
            }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38068036

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档