1

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._$」を含むように明示的に設定できます。ここで、$ は試行回数に置き換えられ、機能しますが、もちろんこれは正しい方法ではありません。どんな助けでも大歓迎です。

4

1 に答える 1