通过AJAX 后台绑定一个下拉,加载数据没问题,数据如:2018
2017我想 加载的时候就默认获取第一个值2018,可是各种写法就是获取不了,哪里问题。
但通过手动选择,触发 通过change 我可以获取2018  2017 的数值。  $("#dllYear").change(function () {
            //获取选中的value值
            var selectVlaue = $(this).find("option:selected").val();
            alert(selectVlaue);
        });
                        <div style="width:49%; float:left">
                            <label for="Yearname">Year \ 年:</label>
                            <div>
                                <select id="dllYear" class="form-control">
                                </select>
                            </div>
                        </div>    function BindYear(fType, seleparm, corpCode, lang) {
        $.ajax({
            type: "get",
            url: '@Url.Action("GetDllList", "Board")',
            data: { fType: fType, seleparm: seleparm, corpCode: corpCode, lang: lang },
            dataType: "json",
            contentType: "application/json",
            success: function (data) {
                var ddl = $("#dllYear");
                //添加默认
                //ddl.append("<option value='-1'>--请选择--</option>");
                //转成Json对象
                var result = eval(data);
                var i = 0;
                //循环遍历 下拉框绑定
                $(result).each(function (i) {
                    //var opt = $("<option></option>").text(result[key].FISCAL_YR).val(result[key].FISCAL_YR);
                    //ddl.append(opt);
                    if (i == 0)
                    {
                        ddl.append("<option value=" + i + " selected>" + result[i].FISCAL_YR + "</option>");
                    }
                    else
                    {
                        ddl.append("<option value=" + i + ">" + result[i].FISCAL_YR + "</option>");
                    }
                    i = i + 1;
                });
            }
        });
       
    }

解决方案 »

  1.   


    简单说,如何在绑定完后,获取第一个数据:2018,  各种写法都获取不了,数据绑定是没问题的。 请有时间 帮忙下 谢谢!var teval = document.getElementById("dllYear").value;
    var teval = $("#dllYear").find("option:selected").text();
    var teval = $("#dllYear").find("option:first").text();
    var teval =$("#dllYear").val();但 通过手动选择下拉,就可以获取的到。
      

  2.   


        function BindYear(fType, seleparm, corpCode, lang) {
            $.ajax({
                type: "get",
                url: '@Url.Action("GetDllList", "Board")',
                data: { fType: fType, seleparm: seleparm, corpCode: corpCode, lang: lang },
                dataType: "json",
                contentType: "application/json",
                success: function (data) {
                    var ddl = $("#dllYear");
                    //添加默认
                    //ddl.append("<option value='-1'>--请选择--</option>");
                    //转成Json对象
                    var result = eval(data);
                    var i = 0;
                    //循环遍历 下拉框绑定
                    $(result).each(function (i) {
                        //var opt = $("<option></option>").text(result[key].FISCAL_YR).val(result[key].FISCAL_YR);
                        //ddl.append(opt);
                        if (i == 0)
                        {
                            ddl.append("<option value=" + i + " selected>" + result[i].FISCAL_YR + "</option>");
                        }
                        else
                        {
                            ddl.append("<option value=" + i + ">" + result[i].FISCAL_YR + "</option>");
                        }
                        i = i + 1;
                    });                //要在option元素都添加之后才能获取
                    var selectVlaue = ddl.find("option:selected").val();
                    alert(selectVlaue);

                }
            });
           
        }
      

  3.   

    是执行之后的啊 ,页面都看的到 绑定的数据,手动选都可以获取的到。就是加载的时候想获取 第一个值。
            $(document).ready(function () {            BindYear('FISCAL_YR', '', '', '');
        
                //获取不了 第一个加载值
                // var tev = document.getElementById("dllYear").value;
                // var tev = $("#dllYear").find("option:selected").text();
                // var tev = $("#dllYear").find("option:first").text();
                //var tev = $("#dllYear").val();
                 alert(tev);
                return false;
            });
      

  4.   


    ajax是异步加载的。
    ajax的  success: function (data) 函数也是异步执行的,
    使用ajax一定要了解“异步”的概念。就是说,$.ajax()之后的代码会先执行,这时option元素还都没有添加,当然获取不到。
    success: function (data) 函数是在异步加载完毕之后才执行,要在这时才能获取到数据。
      

  5.   

    你这没有绑定就执行后面代码了,除非在ajax里加入async:false选项,或者用#2的代码,在回调中访问
      

  6.   

    你这没有绑定就执行后面代码了,除非在ajax里加入async:false选项,或者用#2的代码,在回调中访问 async: false,  是加这个,哎  这2年写代码少了。非常感谢您!