jquery - 如何在下拉列表中填充值列表

标签 jquery ajax grails

我有两个选择下拉菜单。如果我从一个下拉列表中选择值,则另一个下拉列表应填充相应的值。

<g:select name="firstText" from="${eventsList}" noSelection="['':'-Choose the From Date-']" onchange="categoryChanged(this.value)" />
            <label>WayBill Id</label>
            <select id="bill">
                <option>Select Bill</option>
             </select>

在onchange函数中,我正在对 Controller 进行AJAX调用并获取值
这是我的ajax功能
function categoryChanged(categoryId) {
    alert(categoryId)
    $.ajax({
        url:"<g:createLink url="[action:'categoryChanged',controller:'jsonComparison']" />",
        asnyc: false,
        data: {dateValue:categoryId},
        success: function(data){  
            //var retrievedValue = JSON.parse(data);
            alert("inside the success ajax function"+data)

            //$("#wayBill1").val(retrievedValue.value1)
            //$("#wayBill1").html(retrievedValue.value1)
            //$('#wayBill1 :selected').text();
            var select = $('#bill');
            select.find('option').remove();
            $.each(retrievedValue,function() {             
                    $('<option>').val(data).text(data).appendTo(select);        

           });

        } 
    });
}

警报alert(“成功ajax函数内部” + data)正在使用这些值触发,但无法在第二个下拉列表中显示。这些值代表[0000-00.00,0001-00.00,0002-00.07]之类的值
这是我的 Controller 课
def categoryChanged(){
        String firstParameter = params?.dateValue
        def reply
        def wayB = []
        wayB = JsonComparison.findAllByDateValue(firstParameter)
        println "wayBill id: "+wayB.Bill
        //reply = [status:true, value1:"${wayB.Bill}"]
        render wayB.wayBill as List


    }

我是否正确呈现它,因为JsonComparison.findAllByDateValue将返回值列表,否则我在显示它时做错了。一旦我收到响应,第二个选择将变为空,并且没有将值放入其中

最佳答案

问题在这里:

$.each(retrievedValue,function() {             
   $('<option>').val(data).text(data).appendTo(select);        
});

您尝试对“未定义”进行迭代,并使用返回的数据集填充每个选项。

我也建议将 Controller 中返回的列表转换为JSON:
render wayB.wayBill as JSON

然后在填充下拉列表时使用JS解析此JSON:
$(data).each(function() {
    $('<option>').val(this).text(this).appendTo(select); 
});

关于jquery - 如何在下拉列表中填充值列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42382341/

相关文章:

ajax - 提交表单后,如何将页面保持在当前位置,以便用户可以看到他们可能犯的错误?

javascript - 从 laravel 5 中的下拉框中选择项目时,应更改隐藏的输入值

javascript - 添加用户名而无需硬编码,chatbuilder 应用程序

c# - Ajax 调用在物理上不同的文件中对 Controller 较慢

grails - 无法解析类LocalTime grails

grails - 如何找到grails中每个元素的出现次数?

grails - 在 Grails 域类中使用继承

jquery - 如何防止网站响应

数组中最高 6 个值的 Javascript 总和

jquery - IE9 中的 Max-Width 解决方案(带文本溢出)