2013-08-29 5 views
5

Typeahead.jsは、Twitterの非常に人気のある自動募集ライブラリです。typeahead.jsがドメイン間のリクエストを行うことはできますか?

私はインストールしたばかりで、JSONP経由のクロスドメイン要求をサポートしていないようです。 リモート原点に関するエラーが発生しました。

私は周りを探索して、私はそれに関連するものを見つけることができません。

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

+0

Typeahead自体は "サポート"することはできません/ overrule元のポリシー/ Access-Control-Allow-Originの問題 - これは完全にブラウザに依存します。仮ドメインへのクロスドメインリクエストをソースとして使用する場合は、他のコンテキストでそのチャレンジを処理しているときと同様に対処する必要があります。 – davidkonrad

答えて

5

最初の問題については、エラーメッセージで判断すると、typeaheadがJSONP要求を実行していないため、正しく実装されていない可能性があります。あなたは今、JSONPリクエストを実行することを先行入力を見つけることができます

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

:あなたはこのように、データ型として「JSONP」を渡すことによって、JSONPリクエストを実行することができ Typeahead.jsのv0.9.3のよう

。あなたの第二の問題に答えるには

UPDATE

。作者はJSONPをサポートすることを目標にしていましたが、それは動作しますが、現在のバージョンのいくつかのエッジケースでは正しく動作しません。

たとえば、「コールバック」以外のクエリを使用してJSONPリクエストをトリガーする必要がある場合、スタックされます。このような状況でも、次の2つのオプションがあります。

1)JSONPを動作させるためにtypeahead.jsをパッチします。 can be fixed by a simple solution

2)フルjQuery AJAXオブジェクトが公開されているときにv0.10がリリースされるのを待ちます。残念ながら、それは約束された配達日の1ヶ月前であり、今後数週間で完了する予定はありません。

2

0.10.5では、リモートサーバー上で動作します。 C Blanchardの回答の上に、にjsonpという属性が必要でした。

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() 
}); 
関連する問題