使用自动完成时,jQuery Ajax Data与通过Web服务提供的数据不对应

问题描述 投票:0回答:1

我正在使用jQuery的自动完成功能和Web服务。标准的东西。

问题是当我尝试获得如下所选的'值'时,我会看到'标签'数据。

这是绑定返回数据的代码段:

// suggest/addresses/{howMany:int?}/{useBoundary?}/{boundarySize?}/{useBias?}/{query?}/{latitude?}/{longitude?}
        var url = "/api/v1/Suggest/Addresses/UK/20/0/0/1/"
        $('#pickupaddress').autocomplete({
            source: function (request, response) {
                $.ajax({
                    url: url,
                    data: { query: request.term, 
                        latitude: $('#Latitude').val(), 
                        longitude: $('#Longitude').val()
                        },
                    dataType: 'json',
                    type: 'GET',
                    success: function (data) {
                        response($.map(data, function (item) {
                            return {
                                label: item.DisplayAddress, // holds full address = correct
                                value: item.LocatorId // also holds full address but should be database ID
                            }
                        }));
                    }
                })
            },
            select: function (event, ui) {
                $('#pickupaddress').val(ui.item.label);
                $('#LocatorID').val(ui.item.value);
                // But below still shows label as the selected value
                alert('You selected an address with a LocatorID of ' + $('#LocatorID').val());
                return false;
            },
            minLength: 3
        });

我立即认为自动完成代码一定有问题,但经过进一步调查后,看起来函数确实正确显示了值字段(我试着明确地设置它)所以不知何故''value'字段正在拾取与'相同的数据'绑定期间标记'字段。

所以我接下来检查了网络服务,但这似乎很好。当我直接查询Web服务时,我看到它正在返回正确的数据。

"SuggestedAddressesSimple": [
      {
        "DisplayAddress": "Mendip Road, Farnborough, Hampshire, GU14 9HL",
        "LocatorID": "630593"
      },
      {
        "DisplayAddress": "Menin Way, Farnham, Surrey, GU9 8DY",
        "LocatorID": "630679"
      }
etc...

这是某种数据绑定问题吗?如何在jQuery值中正确反映返回的数据?

jquery web-services jquery-ui-autocomplete
1个回答
0
投票

结果这是一个简单的错字。我输入了“LocatorId”而不是“LocatorID”。

奇怪的是,我被jQuery Autocomplete的行为引向错误的“发现”路径。

我想jQuery自动完成功能足够聪明,意识到没有传递任何值,因此使用标签作为值。

© www.soinside.com 2019 - 2024. All rights reserved.