0

我将自动完成数据源更改为我的 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
})
4

1 回答 1

0

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

                return {
                    label: item,
                    value: item
                }

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

更新:如果您的服务器返回的正是您发布的内容,那么它不是有效的JSONP响应。有关执行 JSONP 的正确方法,请参阅本教程和 jQuery文档(不过,如果您正在查询为页面提供服务的同一个域,则使用它更简单 - 也更安全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)。如果需要,您可以自定义,阅读文档以获取更多信息。

于 2013-02-04T07:49:20.507 回答