Javascript 使用json将Ajax响应设置为下拉
这里我使用Javascript 使用json将Ajax响应设置为下拉,javascript,jquery,ajax,json,struts2,Javascript,Jquery,Ajax,Json,Struts2,这里我使用json+ajax+struts2创建相关下拉列表。第一个下拉列表具有基于这些值的一些值,第二个下拉列表正在加载。在第二个下拉列表中,每次单击第一个下拉列表的数据后,我都会得到未定义的响应值(这里我使用的是onchange事件)。我将从struts2获得ajax响应作为对象。我想在第二个下拉列表中将这些对象转换为字符串(它应该包含id和名称)。我不知道如何将对象转换成字符串。我尝试了stackoverflow和Google中的一些链接,但它对我不起作用。这是我的密码: Struts2:
json+ajax+struts2
创建相关下拉列表。第一个下拉列表具有基于这些值的一些值,第二个下拉列表正在加载。在第二个下拉列表中,每次单击第一个下拉列表的数据后,我都会得到未定义的响应值(这里我使用的是onchange
事件)。我将从struts2获得ajax响应作为对象。我想在第二个下拉列表中将这些对象转换为字符串(它应该包含id和名称)。我不知道如何将对象转换成字符串。我尝试了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);
}
});
});
$(“.country”).change(函数(){
var id=$(this.val();
var dataString='id='+id;
$.ajax({
类型:“POST”,
url:“sendDropdown.action”,
数据:dataString,
成功:功能(响应){
警报(响应);
var myJSONText=JSON.stringify(响应);
//警报(myJSONText);
var obj=JSON.parse(myJSONText);
警报(obj);
var html='select Section';
对于(变量i=0;i
在这里,我得到了十六进制格式的响应(在警报中)。但在下拉列表中,我得到了未定义的响应。我建议您使用
这是一个好主意
如果列表非常大,那么就需要选择第二个选择列表
当然,您可以使用ajax,但问题是您希望接收的数据类型
您可能希望使用第二个select,它在响应中实际发送JSON
或者您希望在选择第一个select时触发ajax请求,然后在响应中获得完整的第二个select 在struts2动作中写下回应,这是一种非常糟糕的方式。