Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/405.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用json将Ajax响应设置为下拉_Javascript_Jquery_Ajax_Json_Struts2 - Fatal编程技术网

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动作中写下回应,这是一种非常糟糕的方式。