jquery自动完成json值

时间:2014-11-25 15:21:42

标签: javascript jquery ajax json

我正在使用带有json请求的jquery自动完成功能。

我的自动填充代码是:

$("#company_name").autocomplete({
        source: function( request, response ) {
        $.ajax({
            url: "https://url/Address.ashx?site=handelsregister",
            dataType: "jsonp",
            data: {q: request.term},
            success: function(data) {
                        response($.map(data, function(item) {
                        return {
                            label: item.handelsnaam,
                            id: item.dossiernummer,
                            street: item.straat
                            };
                    }));
                }
            });
        },
        minLength: 2,
        select: function(event, ui) {
            $('#company_name').val(ui.item.label);
            $('#street').val(ui.item.street);
        }
    });

Resonse看起来像这样:

{"resultatenHR":[{"handelsnaam": "Jan Tiebie B.V.", "dossiernummer": "35016711", "subdossiernummer": "0000", "vestigingsnummer": "000000408700", "straat": "Middelweg", "huisnummer": "65", "huisnummertoevoeging": "", "postcode": "1911EB", "plaats": "Uitgeest"},{"handelsnaam": "Jan de Wolf Beheer B.V.", "dossiernummer": "36018787", "subdossiernummer": "0000", "vestigingsnummer": "000020159137", "straat": "Peperstraat", "huisnummer": "17", "huisnummertoevoeging": "", "postcode": "1441BH", "plaats": "Purmerend"},{"handelsnaam": "Holding Jan Greijmans B.V.", "dossiernummer": "13014184", "subdossiernummer": "0000", "vestigingsnummer": "000010702075", "straat": "Kevelaerstraat", "huisnummer": "3", "huisnummertoevoeging": "", "postcode": "6002BL", "plaats": "Weert"},{"handelsnaam": "Holding Jan Prins B.V.", "dossiernummer": "34001716", "subdossiernummer": "0000", "vestigingsnummer": "000018682057", "straat": "Middenhavenstraat", "huisnummer": "72", "huisnummertoevoeging": "", "postcode": "1976CM", "plaats": "IJmuiden"},{"handelsnaam": "Jans Boven-Leeuwen B.V.", "dossiernummer": "52473201", "subdossiernummer": "0000", "vestigingsnummer": "000022396934", "straat": "Zwaanheuvelstraat", "huisnummer": "8", "huisnummertoevoeging": "", "postcode": "6657KJ", "plaats": "Boven-Leeuwen"},{"handelsnaam": "Jan Drost Holding B.V.", "dossiernummer": "56557876", "subdossiernummer": "0000", "vestigingsnummer": "000026099330", "straat": "Patrimoniumlaan", "huisnummer": "63", "huisnummertoevoeging": "", "postcode": "3904AB", "plaats": "Veenendaal"},{"handelsnaam": "Jan Bone Beheer B.V.", "dossiernummer": "09168070", "subdossiernummer": "0000", "vestigingsnummer": "000020131275", "straat": "C.A. Thiemestraat", "huisnummer": "60", "huisnummertoevoeging": "", "postcode": "6828DX", "plaats": "Arnhem"},{"handelsnaam": "Jan Berkers Beheer B.V.", "dossiernummer": "17150615", "subdossiernummer": "0000", "vestigingsnummer": "000005415055", "straat": "Griendtsveenseweg", "huisnummer": "26", "huisnummertoevoeging": "", "postcode": "5754AB", "plaats": "Deurne"},{"handelsnaam": "Jan Boudesteijn Holding B.V.", "dossiernummer": "34060251", "subdossiernummer": "0000", "vestigingsnummer": "000019124791", "straat": "Flevoland", "huisnummer": "1", "huisnummertoevoeging": "", "postcode": "1948RH", "plaats": "Beverwijk"},{"handelsnaam": "Jan van IJken Oude Bouwmaterialen B.V.", "dossiernummer": "32071283", "subdossiernummer": "0000", "vestigingsnummer": "000018555772", "straat": "Rozenbottelberg", "huisnummer": "1", "huisnummertoevoeging": "", "postcode": "3755BR", "plaats": "Eemnes"}]}

当我使用自动完成功能时,下拉列表显示但是为空。

知道如何解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

你阵列周围的{"resultatenHR":包装器会导致问题。您的$.map调用期望在此上下文中使用数组,而不是对象。

您需要从data中提取数组以传递给$.map()。这看起来像这样:

        success: function(data) {
                    response($.map(data.resultatenHR, function(item) {
                    return {
                        label: item.handelsnaam,
                        id: item.dossiernummer,
                        street: item.straat
                        };
                }));
            }
        });