这里我使用json + ajax + struts2
创建依赖的下拉列表。首先下载基于这些值的某些值,第二个下拉列表正在加载。在第二次下拉中,我在每次点击第一次下载的数据后得到响应未定义的值(这里我使用的是onchange
事件)。我从struts2获取ajax响应作为对象。我想将这些对象转换为第二个下拉列表中的字符串(它应该包含id和name)。我不知道如何将对象转换为字符串。我尝试了stackoverflow中的一些链接并用Google搜索,但它对我不起作用。这是我的代码:
Struts2的:
second_drop_downList=retrieveSecond();
ServletActionContext.getResponse().setContentType("text/html");
PrintWriter out = ServletActionContext.getResponse().getWriter();
out.print(second_drop_downList);
out.flush();
这里我得到了数据库中存在多少数据的正确大小。我通过上面的代码将这些数据传递给ajax响应。
这是我的ajax代码:
$(".country").change(function() {
var id = $(this).val();
var dataString = 'id=' + id;
$.ajax({
type : "POST",
url : "sendDropdown.action",
data : dataString,
success : function(response) {
alert(response);
var myJSONText = JSON.stringify(response);
//alert(myJSONText);
var obj = JSON.parse(myJSONText);
alert(obj);
var html = '<option value="">select Section</option>';
for ( var i = 0; i < obj.length; i++) {
html += '<option value="'+obj[i].id+'">' + obj[i].dep_name
+ '</option>';
}
html += '</option>';
$('.city').html(html);
}
});
});
这里我以十六进制格式(在警报中)获得响应。但是在下拉列表中我得到了未定义。
答案 0 :(得分:0)
我建议您使用Struts2 DoubleSelect
这是一个很好的example
如果列表非常大,那么您可以选择第二个选择列表。
您当然可以使用ajax,但关注的是您希望接收的数据类型。
您可能希望将Struts2 Jquery Select Tag用于实际在响应中发送JSON的第二个选择。
或者您想在选择第一个选择时触发ajax请求,然后在响应中获得完整的第二个选择。