如何从Google自定义搜索中的地址栏中获取查询

时间:2016-02-22 12:24:01

标签: google-custom-search

我的标题中有一个搜索栏和一个单独的搜索页面,

在搜索栏中执行搜索请求时。它返回一个看起来像'?q = querystring'的查询字符串,它自动将这个查询字符串链接到我的搜索页面。

问题
如何从地址栏中获取查询字符串并使用它来填写Google自定义搜索栏。

1 个答案:

答案 0 :(得分:0)

你没有说明你使用的是什么,所以我会假设你想要最简单的方法:

如果您使用的是new Element API v2,那么您有两种方法可以处理2页搜索:

  1. 完整渲染
  2. <强>的index.html

    <!-- GOOGLE SEARCH JS Search Only Implementation-->
    <div>
        <script>
          (function() {
            var cx = 'YOUR_API_KEY';
            var gcse = document.createElement('script');
            gcse.type = 'text/javascript';
            gcse.async = true;
            gcse.src = 'https://cse.google.com/cse.js?cx=' + cx;
            var s = document.getElementsByTagName('script')[0];
            s.parentNode.insertBefore(gcse, s);
          })();
        </script>
        <gcse:searchbox-only resultsUrl="search.html"></gcse:searchbox-only>
    </div>
    

    <强> search.html

    <!-- GOOGLE SEARCH JS Implementation-->
    <div>
    <script>
    (function() {
        //Same code from Index.html
    </script>
    <gcse:search></gcse:search>
    </div>
    
    1. 自定义索引+搜索页面渲染
    2. 您可以在“索引”页面创建自己的搜索表单,在该页面上,它将使用您将在queryParameterName上挂钩的参数发送HTTP GET。这将在正在渲染的gsce元素中指定。示例网址为http://localhost:3939/search?search_term=Miku

      <强>的index.html

              <form method="get" action="search.html" name="searchform" id="searchform">
                  <label for="words">Search:</label>
                  <input name="search_term" alt="Search_term" value="" size="16" id="words" type="text" accesskey="s">
                  <button type="submit" value="Submit" accesskey="g">Search</button>
              </form>
      

      <强> Search.html

      <!DOCTYPE html>
      <html>
      <head>
      </head>
      <body>
      <div>
      <script>
      (function() {
        var cx = 'YOUR CSE KEY';
        var gcse = document.createElement('script');
        gcse.type = 'text/javascript';
        gcse.async = true;
        gcse.src = 'https://cse.google.com/cse.js?cx=' + cx;
        var s = document.getElementsByTagName('script')[0];
        s.parentNode.insertBefore(gcse, s);
      })();
      </script>
      <gcse:search queryParameterName="search_term"></gcse:search>
      </div>
      </body>
      </html>
      

      根据我处理元素API v2的经验,这是少数可以在客户端自定义的公开钩子之一。另外,您应该在CSE页面上呈现自己的代码,然后添加 queryParameterName