使用jquery填充下拉列表

时间:2014-04-24 06:11:24

标签: jquery vb.net drop-down-menu

enter image description here我有一个返回列表的Web方法。

    <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,因此我假设我正在正确地对阵列。每个警报只显示一个循环,然后没有任何反应。 我真的不知道这里有什么不对。 编辑: 改变了代码和 我在$ .each中添加了一个警报图像。我不应该只获得一个价值吗?

5 个答案:

答案 0 :(得分:0)

jQuery.each将密钥和值传递给回调函数:

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

答案 1 :(得分:0)

我想在下面的代码中

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

this.data不起作用你必须看到数据的属性

like(data.somethingYourProperyname)

答案 2 :(得分:0)

需要将data.d传递给$ .each()。由于data.d是字符串数组,this应该是字符串本身,而不是this.data ...

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

答案 3 :(得分:0)

因为它是一个列表,所以使用它来访问

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

答案 4 :(得分:0)

这很有效。感谢所有我不会想到的建议。

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