我有,所以我的ModelMap中有一个名为 cityLocationCodes 的地图。 我想访问此地图并根据当前用户的选择获得价值。
我有以下javascript代码:
<script>
function getCoutryValue(countrySelect) {
var countryValue = countrySelect[countrySelect.selectedIndex].value;
console.log(countryValue)
return countryValue;
}
document.addEventListener('DOMContentLoaded', function () {
var countrySelect = document.getElementById('country');
var countryValue = getCoutryValue(countrySelect);
console.log(countryValue);
#foreach ($location in $cityLocationCodes.get(countryValue))
console.log("$location.name");
#end
});
问题是我真的无法在foreach循环内传递 var countryValue 来从地图中获取正确的值- $ cityLocationCodes.get(countryValue)-它不会工作。
我也尝试了另一种方法-
document.addEventListener('DOMContentLoaded', function () {
var countrySelect = document.getElementById('country');
var countryValue = getCoutryValue(countrySelect);
console.log(countryValue);
var cities = $cityLocationCodes;
for (i = 0; i < cities.get(countryValue).length; i++) {
console.log(cities.get(countryValue)[i].name);
}
当我在Chrome浏览器中打开“源”时,它确实以某种方式看到了地图,但是随后出现未捕获的语法错误。所以问题是: 如何根据我选择的键从控制器传递的映射中获取值?
答案 0 :(得分:0)
这里有个很大的误会。
将HTTP请求发送到服务器并将HTTP响应发送回浏览器后,就会在客户端的浏览器中评估Javascript代码。
在生成HTTP响应的同时,在服务器上评估Velocity代码。
因此您不能混合使用Javascript和Velocity变量。
如果要在Javascript事件中从服务器获取特定值,则必须诉诸Ajax调用。