我正在 struts2 中创建双选框,当我在第一个选择框中选择国家/地区时,它会在第二个选择框中根据国家/地区获取城市。在第一个选择框的onchange event
JS函数中,我传递选定的值并使用ajax发送方法将数据发送到操作,基于我在动作类方法中创建城市列表的事实。那么如何在Javascript中访问列表以便我可以将其设置为第二个选择框?
这是我的代码:
<script>
function loadCity(str) {
var xmlhttp;
if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
} else { // code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET", "loadcity.action?country=" + str, true);
xmlhttp.send();
var dat = document.getElementById("cityList").value.toString();
window.alert(dat);
}
</script>
<s:select name="country" id="country" list="countryList" label="country" onchange="loadCity(this.value)">
</s:select>
<s:select name="city" label="City" id="cityList" list="cityList">
</s:select>
这是我的动作类方法:
public String loadcity() {
cityList = new ArrayList();
cityList.add("New Delhi");
cityList.add("Mumbai");
cityList.add("Moradabad");
setCityList(cityList);
return NONE;
}
此处cityList
具有正确的值,但当我在我的JS函数中使用它时,它显示为null
。
答案 0 :(得分:0)
您没有提供太多信息,但是:从操作方法返回NONE
意味着不会再进行任何处理,也不会返回任何结果。
你实际上并没有做任何会导致第二个选择框被修改的东西;如果你想推出自己的基于Ajax的双重选择,你需要编写实际做的动作结果的JavaScript。有无数的例子说明如何做到这一点。
你可能想要使用JSON结果,顺便说一句,让事情变得更容易。
更简单,请使用S2 jQuery plugin,其中包含example of an Ajax-based double select。
IMO在原始JS中手工制作Ajax是徒劳的。