5

Typeahead.jsは、Twitter で非常に人気のある自動提案ライブラリです。

インストールしたばかりですが、JSONP 経由のクロス ドメイン リクエストをサポートしていないようです。リモートオリジンが許可されていないというエラーが表示されます。

私はグーグルで検索しましたが、それに関連するものは何も見つかりません。

この機能がサポートされているかどうかは誰でも確認できますか。

4

2 に答える 2

5

最初の問題に関しては、エラー メッセージから判断すると、先行入力が JSONP 要求を実行していないため、正しく実装されていない可能性があります。

Typeahead.js v0.9.3 以降では、次のように「jsonp」を dataType として渡すことで JSONP リクエストを実行できます。

$('.typeahead').typeahead({
  name: 'jsonpExample',
  remote: {
    // ...
    dataType: 'jsonp'
  }
});

typehead が JSONP リクエストを実行するようになりました。

アップデート

あなたの2番目の問題に答える際に。作者は JSONP をサポートすることを目標としており、概して動作しますが、現在のバージョンでは一部のエッジ ケースで適切に動作しません。

たとえば、「コールバック」以外のクエリを使用して JSONP リクエストをトリガーする必要がある場合、行き詰まるでしょう。この状況または同様の状況では、次の 2 つのオプションがあります。

1) typehead.js に自分でパッチを適用して、JSONP が機能するようにします。たとえば、コールバック名の問題は、簡単な解決策で修正できます

2) 完全な jQuery AJAX オブジェクトが公開されたときに、v0.10 がリリースされるのを待ちます。残念ながら、約束された納期を1か月過ぎており、今後数週間で完成する兆候はありません

于 2013-09-12T13:39:22.137 に答える
2

0.10.5 では、リモート サーバー上で動作します。C Blanchard の答えに加えて、jsonp属性が必要でしたajax

var items = new Bloodhound({
  ...
  remote: {
    url: 'http://localhost/api/items?q=%QUERY',
    ajax: {
      jsonp: 'callback',
      dataType: 'jsonp'
    }
});
items.initialize()
...
$('.typeahead').typeahead(null, {
  ...
  source: items.ttAdapter()
});
于 2015-01-21T21:09:01.563 に答える