java使用ajax填充servelet的下拉列表
我需要使用ajax从数据库中填充下拉列表,Iam使用两个下拉列表,如果选择了第一个下拉列表值,则必须显示第二个下拉列表值(必须根据第一个下拉列表中选择的值从DB中检索)。DAO(数据访问层)将4个结果作为arraylist对象返回,但在http responsetext中,它将作为对象而不是值打印。我尝试使用for循环来迭代它,但我无法实现它。请在这方面帮助我
HTML代码:
// First Drop Down
Question Field :<select name="ddlAddQuestionField" id='ddlAddQuestionField' onchange="getFieldPosition()">
<option value=''>Select Question Field</option>
<option value='Security Question'>Security Question</option>
<option value='Personal Info'>Personal Info</option>
</select>
// Second DropDown
User Field Position:<select name="userFieldPosition" id="userFieldPosition" disabled="disabled"> </select>
Javascript代码
function getFieldPosition(){
var fieldName =$("#ddlAddQuestionField").val();
if(window.XMLHttpRequest){
xmlhttp=new XMLHttpRequest();
} else {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function() {
if(xmlhttp.readyState==4 && xmlhttp.status==200){
document.getElementById("userFieldPosition").disabled=false;
alert(xmlhttp.responseText);
var response =xmlhttp.responseText;
for(var i=0;i<response.length;i++) {
var elements = "<option value='"+response[i]+"'>"+response[i]+"</option>";
$("#userFieldPosition").append(elements);
}
}
}
xmlhttp.open("POST","ApplicationController",true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send("fieldAction=fieldPosition&fieldName="+fieldName);
}
维修代码
fieldPositionObj = fieldPositionDaoObj.getFieldPosition(fieldName); //Hitting the Dao
// In dao it returns arraylist object.
response.setContentType("text/plain");
response.setCharacterEncoding("UTF-8");
response.getWriter().write(fieldPositionDaoObj);
# 1 楼答案
有一些特定的框架,比如ExtJs,可以让你不用编写太多代码就可以做到这一点。我能想到的唯一方法是将第二个下拉框放在
div
标记中。在选择第一个下拉框时,调用将发出ajax请求的函数。获得success
响应后,通过使用这些值创建一个新的下拉框来重写div
的内容# 2 楼答案
你的问题是线路
您正在直接根据响应编写java Obejct。。我认为
fieldPositionDaoObj
是列表或数组。。所以toString表示是其中
com.bean.QuestionInfoBean@c135d6
是Java对象的字符串表示我认为您需要返回的是Java对象/列表/数组的JSON响应,您的代码可以正常工作
您的JSON表示应该如下所示
或者
您可以编写自己的方法,比如
public String getJSOnRepresentation();
然后呢
Sample example on What and how to code
也看到
http://json.org/java/ https://github.com/douglascrockford/JSON-java/blob/master/JSONString.java https://github.com/douglascrockford/JSON-java/blob/master/JSONArray.java https://github.com/douglascrockford/JSON-java/blob/master/JSONObject.java
# 3 楼答案
我尝试了下面提到的代码,现在运行良好
JAVA脚本:
服务: