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/javascriptapplication/json

于 2013-02-04T07:49:20.507 に答える