Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/476.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何设置';访问控制允许原点';标题是否带有提前打印/猎犬?_Javascript_Jquery_Rest_Typeahead_Bloodhound - Fatal编程技术网

Javascript 如何设置';访问控制允许原点';标题是否带有提前打印/猎犬?

Javascript 如何设置';访问控制允许原点';标题是否带有提前打印/猎犬?,javascript,jquery,rest,typeahead,bloodhound,Javascript,Jquery,Rest,Typeahead,Bloodhound,我正在尝试集成一个自动完成字段,该字段使用REST获取其信息。我用的是打字机/猎犬。我根据文档中的示例进行了后续操作,但我找不到任何地方如何设置标题,以使其正常工作。例如,这是代码: var countries = new Bloodhound({ datumTokenizer: function(countries) { return Bloodhound.tokenizers.whitespace(countries); },

我正在尝试集成一个自动完成字段,该字段使用REST获取其信息。我用的是打字机/猎犬。我根据文档中的示例进行了后续操作,但我找不到任何地方如何设置标题,以使其正常工作。例如,这是代码:

    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.
任何建议都将不胜感激


谢谢

如果用于构造头文件的所有内容都是同步的,那么只需在ajax选项中传递
beforeSend
函数即可。i、 e:

    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);
           }
       }
    }

为了避免混淆,您正在设置auth头以获得对API的访问,API定义了
访问控制允许来源

您是否使用
文件://
协议加载页面(而不是ajax请求)?首先,您不希望使用带预取的
%QUERY
,因为它需要返回所有记录。其次,尝试将
ajax:$.ajax({type:'GET',dataType:'jsonp'})
添加到
prefetch
对象中。不,文件是使用http://协议加载的。我有一个表格,里面有我对班级的意见。国家。当我开始在输入上输入字母时,我想要检索api中保存的建议列表。可以使用在头文件中发送的一些授权密钥来访问API本身。问题是在这种情况下如何设置标题,因为例如在普通ajax查询中,您将具有headers属性。但是在typeahead/Hound中,我没有看到这个选项,所以我不知道应该在哪里包含它们。希望这能提供更多的信息。@sirssince1990我问这个问题的原因是,如果页面和ajax目标url都是
http://localhost:80/
,您不应该有CORS要求。我只是想弄明白为什么会发生这种事