заполнение раскрывающегося списка с помощью jquery

0

Изображение 174551 У меня есть веб-метод, который возвращает список.

    <WebMethod()> _
Public Shared Function populateDropdown(ByVal aptdate As Date, ByVal dentistid As Integer) As List(Of String)
    Dim apttime As New List(Of String)
    Try
        apttime = DatabaseLayer.GetAvailableAppointmentTime(aptdate, dentistid)
    Catch ex As Exception
        Throw ex
    End Try
    Return apttime
End Function

Конечный класс

Я хочу заполнить выпадающий список указанным выше набором результатов

Для этого я использую функцию jquery ajax.

              $.ajax({
                type: "POST",
                url: "Appointment.aspx/populateDropdown",
                data: '{aptdate:' + '"' + aptdate + '"' + ',dentistid:' + '"' + dentistid + '"' + ' }',
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (data) {
                    alert(data.d.length);
                    var options = $("#drpdwnapttime");
                    $.each(data, function (key,value) {
                    alert(value);
                        options.append($("<option />").val(this.data).text(this.data));
                    });
                }
            });

Однако, похоже, это не работает. Значение в поле предупреждения равно 11, поэтому я предполагаю, что я правильно собираю массивы. Предупреждение для каждого показывает только один цикл, а затем ничего не происходит. Я не могу понять, что здесь не так. EDit: изменил код, и я добавил изображение предупреждения, которое я получаю внутри $.each. Должен ли я получать только одно значение?

Теги:
drop-down-menu

5 ответов

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

Это работает. Спасибо за все предложения, которые я бы не подумал иначе.

var resultData = data['d'];
$.each(resultData, function (key,value) {
alert(this);
options.append($("<option />").val(value).text(value));
})
0

Необходимо передать data.d в $.each(). А поскольку data.d - это строковый массив, this должна быть сама строка, а не this.data...

$.each(data.d, function () {
    options.append($("<option />").val(this).text(this));
});
0

я думаю, что ниже код

options.append($("<option />").val(this.data).text(this.data));

this.data не будет работать, вы должны увидеть свойство данных

например (data.somethingYourProperyname)

0

jQuery.each передает ключ и значение для обратного вызова:

$.each(data, function(key, value) {
    options.append($("<option />").val(value).text(value));
});
  • 0
    Кажется, не работает. Я загрузил изображение окна оповещения, которое попал внутрь $ .each. Разве я не должен получить только одно значение.
0

Поскольку это список, используйте это для доступа к этому

$.each(data, function () {
    options.append($("<option />").val(this).text(this));
}

Ещё вопросы

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