angularプロジェクトでこのオートコンプリートを複製しようとしています
http://plnkr.co/edit/t1neIS?p=preview
HTML とコントローラ データをプロジェクトにコピーすると、Plunker と同じように動作します。次に、HTTP サービスをカスタム エンドポイントに向けたいので、Plunker の例とまったく同じデータ構造とヘッダーを返す URL を作成しますが、オートコンプリートは機能しません。
Plunker の例からの元のコントローラー コード:
$scope.cities = function(cityName) {
return $http.jsonp("http://gd.geobytes.com/AutoCompleteCity?callback=JSON_CALLBACK &filter=US&q="+cityName).then(function(response){
return limitToFilter(response.data, 15);
});
};
私のバージョン:
$scope.cities = function(cityName) {
return $http.jsonp("http://localhost/shfofx/PHP/Rest/symbols.php?keyword="+cityName).then(function(response){
return limitToFilter(response.data, 15);
});
};
plunker の例から返されたデータセット (ブラウザの URL):
JSON_CALLBACK([
"San Acacia, NM, United States",
"San Andreas, CA, United States",
"San Angelo, TX, United States",
.....
])
エンドポイント (ブラウザの URL) から返されたデータ セット:
JSON_CALLBACK([
"GOOD",
"GOODN",
"GOODO",
......
])
Plunker の例からのヘッダー情報:
Content-Length →671
Content-type →application/javascript
Date →Sat, 19 Oct 2013 02:43:22 GMT
Expires →0
Server →Microsoft-IIS/6.0
X-Powered-By →ASP.NET
私のエンドポイントからのヘッダー情報:
Connection →Keep-Alive
Content-Length →58
Content-Type →application/javascript
Date →Sat, 19 Oct 2013 02:44:30 GMT
Keep-Alive →timeout=5, max=100
Server →Apache/2.2.23 (Unix) mod_ssl/2.2.23 OpenSSL/0.9.8x DAV/2 PHP/5.4.10
X-Powered-By →PHP/5.4.10
Plunker の例のエンドポイントは、希望どおりに機能します (上記の plunker を参照)。URL をエンドポイントにポイントすると、リソースは Chrome のリソース インスペクターに従って取得されますが、値はオートコンプリート オプションとして表示されませんか?? どうすればよいですか?
さらに調べてみると、Chrome のリソース インスペクターは、作業データの応答に次のプレフィックスが付いていることを示しています。
angular.callbacks._2 (the 2 indicating that this is the 3rd call)
私のエンドポイントでは、「JSON_CALLBACK」は置き換えられていません。
返された文字列に「angular.callbacks._$」を含むように明示的に設定できます。ここで、$ は試行回数に置き換えられ、機能しますが、もちろんこれは正しい方法ではありません。どんな助けでも大歓迎です。