从ajax数据库调用填充下拉列表

时间:2013-10-07 21:01:15

标签: jquery ajax vb.net

在我当前的代码中,record不会作为我可以迭代的列表返回。相反,System.Collections.Generic.List'1[ProjectName.BodyStyle]函数会通过$.each

我需要的是我可以浏览的列表,然后从IDBodyStyle1填充下拉列表。这是我的代码:

服务器端控制器:

Function Index(ByVal KovID As String) As List(Of BodyStyle)
            Dim db As New Database1Entities
            Dim record As New List(Of BodyStyle)
            record = (From b In db.BodyStyles Where b.KovID = KovID Select b).ToList
            Return record
        End Function

Jquery的:

function ajaxSuccess(record) {
        var drop2 = $('#Vehicle_BodyStyle_value');
        drop2.get(0).options.length = 0;
        drop2.get(0).options[0] = new Option("Please Select One", "-1");
        $.each(record, function (index, item) {
            alert(index);
            alert(item);
            drop2.get(0).options[drop2.get(0).options.length] = new Option(item.Display, item.Value);
        });
    }

    function ajaxError() {
        $('#Vehicle_BodyStyle_value').get(0).options.length = 0;
        $('#Vehicle_BodyStyle_value').get(0).options[0] = new Option("Error!", "-1");
        alert("Failed to load styles");
    }

    $('#Vehicle_KovId_value').change(function () {
        var kovID = $(this).val();
        var drop2 = $('#Vehicle_BodyStyle_value');
        if (kovID != null && kovID != '') {
            drop2.get(0).options.length = 0;
            drop2.get(0).options[0] = new Option('Please Select One', '-1');
            $.ajax({
                type: "GET",
                url: '/Ajax/Index',
                async: false,
                data: { KovID: kovID },
                contentType: "application/object; charset=utf-8",
                success: ajaxSuccess,
                error: ajaxError
            });
        }
    });

我需要做的是返回record作为我可以通过的内容并从中获取信息。非常感谢任何帮助!

1 个答案:

答案 0 :(得分:2)

如果您在服务器端代码中使用WebAPI方法,那么我希望它能为您序列化为JSON,但由于此处未知的原因似乎并未发生。不知怎的,List(Of BodyStyle)只是被转换成一个字符串,这导致了那个输出。

我确信还有其他事情要做,以便使这个更加惯用的WebAPI功能,但在紧要关头,您总是可以使用the JavaScriptSerializer object手动返回JSON序列化字符串。

您需要更改方法签名以返回字符串:

Function Index(ByVal KovID As String) As String

然后返回对象的序列化字符串:

Return New JavaScriptSerializer().Serialize(record)