как поместить список строк в выпадающее меню

0

Я пытаюсь поместить список строки, которую я получаю из своей базы данных, в раскрывающееся меню. Я попытался использовать массив, но он показывает мне ошибку [[object Object, object Object]...]. Это мой метод 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 + ''; и если я hoverover, я получаю такое же сообщение, как [[object Object], [object, Object]...], если я затем нажимаю на знак +, я получаю, что дети не могут быть оценены. Отображается одно и то же сообщение. Может ли кто-нибудь помочь мне здесь?

Это то, что мой 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());
        });
  • 0
    я разместил то, что получил, когда нажал на вершину х. как вы можете видеть, x содержит имя «Jhon», поэтому я пытаюсь получить четыре имени из базы данных.

1 ответ

0
Лучший ответ

Похоже, что x - это объект, а не массив, а данные, которые вы хотите отобразить, находятся внутри xd. Кроме того, xd не является массивом строк, а массив объектов, содержащий свойства 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');
    });
}
  • 0
    твоя звезда :) спасибо. только последний вопрос, в настоящее время я получаю имена как JhonDipeshCharly, как мне тогда отделить так, чтобы каждое имя было в отдельной строке?
  • 0
    еще раз спасибо, это работает. У меня есть последний заключительный вопрос. Теперь, когда все имена помещены в выпадающее меню. Есть ли способ, которым я могу выбрать их? я получил код для выбора, но где бы я разместить этот код? Я поместил код в конце моего вопроса
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню