jQuery建议自动完成列表不显示

时间:2013-02-04 07:41:44

标签: jquery autocomplete

我将自动完成数据源更改为我的php文件,我尝试了下面的代码。但这不起作用,有人可以建议如何解决它吗?

由于

$('#search').autocomplete({
    source: function( request, response ) {
        $.ajax({
            url: "/property_bldg.php",
            dataType: "jsonp",
            data: {
                query: request.term
            },
            success: function( data ) {
                response( $.map( data.suggestions, function( item ) {
                    return {
                        label: item.text,
                        value: item.text
                    }
                }));
            }
        });
    },
    minLength: 1
})

返回

{query:'A',par1:'',suggestions:['AUSTIN RD','ARCH','ARGYLE ST','AMOY GDN','ARIA','AQUAMARINE','ACADEMIC TERR','APEX','ALLWAY GDN','AP LEI CHAU DRIVE'],data:[]}

更新:

$('#autocomplete_propSearch').autocomplete({
    source: function( request, response ) {
        $.ajax({
            url: "/property_bldg.php",
            dataType: "json",
            data: {
                query: request.term
            },
            complete: function (xhr, status) {
                if (status === 'error' || !xhr.responseText) {
                    alert('Error')
                }
                else {

                    response( $.map( xhr.responseText.suggestions, function( item ) {
                        return {
                            label: item,
                            value: item
                        }
                    }));
                }
            }
        });
    },
    minLength: 1
})

1 个答案:

答案 0 :(得分:0)

您正在迭代字符串数组,但尝试访问它们的text属性。将您的地图正文更改为:

                return {
                    label: item,
                    value: item
                }

jsFiddle的工作示例。如果这对您不起作用,请检查ajax调用是否确实成功完成(例如,通过将data打印到控制台)。

更新:如果您的服务器确切地返回了您发布的内容,那么它不是有效的 JSONP 响应。有关正确执行JSONP的方法,请参阅this tutorial和jQuery docs(但是,如果您查询提供该页面的相同域,则使用json更简单 - 更安全代替)。

例如,如果您的服务器正在接收查询:

http://127.0.0.1:8080/property_bldg.php?callback=jQuery161006659467399874042_13‌​59964924178&query=a&_=1359964930143

正确的回答应该是:

jQuery161006659467399874042_13‌​59964924178({query:'A',par1:'',suggestions:['AUSTIN RD','ARCH','ARGYLE ST','AMOY GDN','ARIA','AQUAMARINE','ACADEMIC TERR','APEX','ALLWAY GDN','AP LEI CHAU DRIVE'],data:[]});

content-type应为text/javascript(不是application/json)。如果需要,您可以自定义,请阅读docs以获取更多信息。