0

REST を使用して情報を取得するオートコンプリート フィールドを統合しようとしています。Typeahead/Bloodhound を使用しています。ドキュメントの例をフォローアップしましたが、これを機能させるためにヘッダーをセットアップする方法がどこにも見つかりません。たとえば、これはコードです:

    var countries = new Bloodhound({  
      datumTokenizer: function(countries) {
        return Bloodhound.tokenizers.whitespace(countries);
      },
      queryTokenizer: Bloodhound.tokenizers.whitespace
      ,
      prefetch: {
        url: "http://localhost/api-1.1/search/country/key/%QUERY",
        filter: function(response) {      
          return response.countries;
        }
      }
    });

    // initialize the bloodhound suggestion engine
    countries.initialize();

    // instantiate the typeahead UI
    $('.typeahead').typeahead(
      { hint: true,
        highlight: true,
        minLength: 1
      }, 
      {
      name: 'country_label',
      displayKey: function(countries) {
        return countries.country.country_name;        
      },
      source: countries.ttAdapter()
    });

これは、コンソール ログでサーバーから取得した応答です。

XMLHttpRequest cannot load http://localhost/api-1.1/search/country/key/%QUERY. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost' is therefore not allowed access.

どんな提案でも大歓迎です。

ありがとう!

4

1 に答える 1

2

ヘッダーの作成に使用するものがすべて同期的である場合beforeSendは、ajax オプションで関数を渡すだけです。すなわち:

    prefetch: {
        url: "http://localhost/api-1.1/search/country/key/%QUERY",
        filter: function(response) {      
            return response.countries;
        },
        ajax: {
            beforeSend: function(jqXHR, settings) {
                var authHeaders;
                // pull apart jqXHR, set authHeaders to what it should be
               jqXHR.setRequestHeader('Authorization', authHeaders);
           }
       }
    }

混乱がないように、API へのアクセスを取得するために認証ヘッダーを設定しています。API は定義しますAccess-Control-Allow-Origin

于 2014-05-24T11:06:48.037 に答える