无法在dataFilter函数中获取数据

时间:2015-04-06 05:48:07

标签: javascript jquery

我正在尝试过滤从服务器收到的json数组。我能够在成功功能中正确接收数据但是我得到的数据是未定义的错误"在filterdata块中。 [Uncaught TypeError:无法读取属性' list'未定义的]

$(function () {
            function log(message) {
                $("<div>").text(message).prependTo("#log");
                $("#log").scrollTop(0);
            }

            $("#city").autocomplete({
                source: function (request, response) {
                    $.ajax({
                        url: "http://api.openweathermap.org/data/2.5/find?mode=json&type=like",
                        dataType: "jsonp",
                        data: {
                            q: request.term
                        },

                        dataFilter: function (data, type) {
                            console.log(data);

                            alert(data.list.length);
                            alert(data.list[0].name + ', ' + data.list[0].sys.country);
                            jsonObj = [];
                            for (i = 0; i < data.list.length; i++) {
                                item = {}
                                item["city"] = data.list[0].name;
                                item["country"] = data.list[0].sys.country;
                                jsonObj.push(item);
                            }
                            return jsonObj;

                        },

                        success: function (data) {
                            //alert(data.list.length);
                            response(data);
                        }
                    });                 
                },
                minLength: 3,
                select: function (event, ui) {
                    log(ui.item ?
                      "Selected: " + ui.item.label :
                      "Nothing selected, input was " + this.value);
                },
                open: function () {
                    $(this).removeClass("ui-corner-all").addClass("ui-corner-top");
                },
                close: function () {
                    $(this).removeClass("ui-corner-top").addClass("ui-corner-all");
                }
            });
        });

1 个答案:

答案 0 :(得分:0)

因为dataFilter是用于处理XMLHttpRequest的原始响应数据的函数。由于您使用的是JSON请求,这不是XHR请求,因此没有XHR对象且没有原始数据,这使得您的情况下dataFilter的行为完全有效。您应该检查成功回调中的响应。