如何将字符串列表放入下拉菜单中

时间:2014-01-22 21:53:11

标签: javascript jquery asp.net

我正在尝试将我从数据库中获取的字符串列表放入下拉菜单中。我尝试使用数组,但它显示[[对象对象,对象对象] ...]的错误。这是我的ajax方法

$(document).ready(function () {
        Method(); });

function Method() {
        ajReq.abort();
        ajReq = $.ajax({
            type: "POST",
            url: "Services/Page.asmx/GetService",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (x) {
                  var opts = '';
                $.each(x, function (i) {
                    opts += '<option>' + this + '</option>';
                });
                $('.dropdown-menu').html(opts);
             }
        });
    }
  

这是我的下拉菜单:

 <div class="fromDropdownMenu" style="display: inline-block;">
        <div class="btn-group">
            <button type="button" id="Button1" class="btn btn-default dropdown-toggle" data-toggle="dropdown">
                <span id="dropdown_title">Name:</span><span class="caret"></span>
            </button>
            <ul class="dropdown-menu">
            </ul>
        </div>
    </div>

目前如果我在$ .each(x,function(i)和hoverover xi get [[object Object],[object,Object] ...]中放置一个断点。如果我然后点击+符号我得到我的来自数据库的数据。

但是当断点击中opts + =''+ this +'';如果我悬停我得到与[[对象],[对象,对象] ...]相同的消息,如果我然后点击+符号我得到的孩子无法评估。相同的消息显示。有人可以帮我吗?

这就是我的x:

     -      x   {...}   Object
-       d   [[object Object],[object Object],[object Object],[object Object]]           Object, (Array)
-       [0] {...}   Object
+       __type  "MakeBooking"   String
    MakeBookingID   0   Number
+       Name    "Jhon"  String
+       [1] {...}   Object
+       [2] {...}   Object
+       [3] {...}   Object
+       arguments   {...}   Object, (Arguments)
    opts    ""  String

这是onselect功能:

 $('.dropdown-menu li').on('click', function () {
            $('#dropdown_title').html($(this).find('a').html());
        });

1 个答案:

答案 0 :(得分:0)

看起来x是一个对象,而不是一个数组,您要显示的数据位于x.d内。此外,x.d不是字符串数组,而是包含属性Name的对象数组。

最后,.dropdown-menu元素是<ul>,因此,不要使用<option>代替子元素,而是使用<li>

success: function (x) {
    var opts = '';
    $.each(x.d, function (i) {
        opts += '<li>' + this.Name + '</li>';
    });
    $('.dropdown-menu').html(opts);
}

甚至更好:

success: function (x) {
    $.each(x.d, function (i) {
        $('<li>').text(this.Name).appendTo('.dropdown-menu');
    });
}