2011-06-28 7 views
0

jQueryオートコンプリートの実装が残っています。私はこのチュートリアルを使用しています:http://1300grams.com/2009/08/17/jquery-autocomplete-with-json-jsonp-support-and-overriding-the-default-search-parameter-q/jQueryオートコンプリートはPHPのJSONレスポンスを表示しません

私のjQueryのコードはこれです:

$("#quickSearchQuery").autocomplete("http://mydomain.net/json.php", { 
    dataType: 'json', 
    selectFirst: true, 
    minChars: 2, 
    max: 8, 
    parse: function(data) { 
     var rows = new Array(); 
     data = data.members; 
     for(var i = 0; i < data.length; i++) { 
      rows[i] = { id : data[i].id, name : data[i].name, location : data[i].location }; 
     } 
     return rows; 
    }, 
    formatItem: function(row, i, n) { 
     return row.name + ' (' + row.location + ')'; 
    } 
}); 

http://mydomain.net/json.php?q=Albへの呼び出しは、このようなJSONレスポンスを生成します。

{"query":"Alb","members":[{"id":"1","name":"Peter Albert","location":"New York"},{"id":"4","name":"Adalbert Smith","location":"Alabama"},{"id":"42","name":"Albert Einstein","location":"Vienna"}]} 

私の問題がある:それはちょうどdoesnの仕事はありません。オートコンプリートが表示されず、要素が作成されません。 チュートリアルのコードを実行すると、すべてが問題なく、都市のオートコンプリートリストが取得されます。しかし、たとえ私がソースURIを変更してもdata.geonamesからdata.membersに(など)、オートコンプライアーは動作を停止します。私が試した

:JSONファイルの私はJSONPJSONdataTypeを変更しましたが、JSONPが '無効なラベル' エラーが発生します

  • は、私はPHPを修正しましたスクリプトのコンテンツタイプをheader("Content-Type: application/json");
  • 他のすべてのオートコンプリートを試しましたが、変更はありません。
  • 私はスタックオーバフローとWebチュートリアルで回答から見つけたすべての修正を試しました
  • geonames.orgからJSONレスポンスをファイルにコピーし、サーバーにアップロードし、このハードコードレスポンスを検索ソースとして使用しました。それでも:(

を示すいかなる自動入力補完は、たぶん、あなたはアイデアを得ていますか?

ありがとう! ジョー

+1

http://mydomain.comに電話するのにどのドメインを使用しますか? – genesis

+1

コンソールエラーはありますか? – calumbrodie

+0

いいえ、JavaScriptのエラーはありません。私は現在localhostからスクリプトを実行しています。 – Joe

答えて

1

オートコンプリートでは、あなたはそれが動作するためにプロパティIDと値を使用する必要があります。プロパティのみです。

public class Product 
    { 
     public String id { get; set; } //must be used 
     public String value { get; set; } //must be used 
     public String marque { get; set; } 
    } 
:リストをレンダリングするために使用さ

をPHPのオブジェクトでは、このようなものを(これは、C#から来ているが、あなたがそれを理解していることと思います)を宣言

とjson-serialized文字列をクライアントに返します。

JSONはそれはあなたのJSで自動マッピングされると、オートコンプリートは今のために働くべきである

[{"id":"1","value":"UMTS","comment":"umts comment"}, 
{"id":"2","value":"RAN","comment":"ran comment"}, 
{"id":"3","value":"Swap","comment":"swap comment"}] 

のようなものです。

関連する問題