You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

jQuery填充Selectbox页面加载时值为undefined问题求助

问题分析与解决方案

嘿,这问题我太熟了!你遇到的核心问题是AJAX请求的异步特性在搞鬼。

为什么会出现undefined

你写的$.get是异步请求——浏览器会先发送请求,然后立刻继续执行后面的代码,不会等请求返回数据。所以当你在$.get外面执行var select = $("#hersteller1 option:selected").val();的时候,下拉框#hersteller1还没被填充任何选项呢!空的下拉框自然拿不到选中值,结果就是undefined,后续依赖这个值的函数当然没法正常执行。

修正后的代码

把需要依赖下拉框数据的操作,全部放到$.get的回调函数里面,确保只有当数据加载完成、选项被添加到下拉框之后,再去获取选中值和执行后续逻辑:

$(document).ready(function(){
    $.get("{{ URL::to('getHersteller')}}", function(data){
        // 先填充下拉框选项
        $.each(data,function(i,value){
            var option = $("<option>", {text : value.hersteller} )
            $('#hersteller1').append(option);
        });
        
        // 现在下拉框有数据了,再获取选中值
        var select = $("#hersteller1 option:selected").val();
        console.log(select);
        
        // 把你的第二个jQuery函数放到这里执行
        // 比如:yourSecondFunction(select);
    });
});

额外小提示

如果需要默认选中某个特定选项,可以在创建option的时候加上valueselected属性,比如:

var option = $("<option>", {
    text: value.hersteller,
    value: value.id, // 假设数据里有id字段
    selected: value.is_default // 如果有默认标识的话
});

内容的提问来源于stack exchange,提问作者JohannesDey

火山引擎 最新活动