2011-11-22 22 views
7

Chúng tôi đang sử dụng API tìm kiếm tùy chỉnh của Google (API phía máy chủ trả tiền) để cấp nguồn cho kết quả tìm kiếm của chúng tôi.Tự động hoàn tất API tìm kiếm tùy chỉnh của Google?

Tôi muốn thêm tính năng tự động hoàn thành vào tìm kiếm - tuy nhiên, có ai biết nếu có hỗ trợ cho điều này (thông qua API phía máy chủ hoặc thông qua một số loại JSONP phía máy khách không?)

Tôi đã thử sử dụng tính năng tự động hoàn tất cho tìm kiếm Tùy chỉnh của Google, nhưng điều này dường như muốn vẽ hộp tìm kiếm và hiển thị quảng cáo google với kết quả mà tôi không muốn.

Trả lời

13

Got một cái gì đó làm việc này như thế này - hy vọng điều này sẽ giúp người khác :)

$(function() { 
    $('input.search') 
    .focus(function() { this.select(); }) 
    .mouseup(function (e) { e.preventDefault(); }) 
    .autocomplete({ 
     position: { 
     my: "left top", 
     at: "left bottom", 
     offset: "0, 5", 
     collision: "none" 
     }, 
     source: function (request, response) { 
     $.ajax({ 
      url: "http://clients1.google.com/complete/search?q=" + request.term + "&hl=en&client=partner&source=gcsc&partnerid={GOOGLESEARCHID}&ds=cse&nocache=" + Math.random().toString(), 
      dataType: "jsonp", 
      success: function (data) { 
      response($.map(data[1], function (item) { 
       return { 
       label: item[0], 
       value: item[0] 
       }; 
      })); 
      } 
     }); 
     }, 
     autoFill: true, 
     minChars: 0, 
     select: function (event, ui) { 
     $(this).closest('input').val(ui.item.value); 
     $(this).closest('form').trigger('submit'); 
     } 
    }); 
}); 
+0

Cảm ơn mã này, tôi đang gặp một vấn đề với mã mà tôi không hiểu. Tôi nhìn thấy yêu cầu mạng đi ra ngoài một cách chính xác và tôi nhìn thấy một phản ứng 200 từ nó, với dữ liệu đáp ứng dự kiến, nhưng vì lý do nào đó mà chức năng thành công không bao giờ bị tấn công. Bất kỳ ý tưởng? – Paul

+0

Tuyệt vời, đã làm việc cho tôi. Paul, nếu bạn không thấy bất kỳ đề xuất nào, có thể Google đơn giản không có bất kỳ đề xuất nào cho bạn. Tôi đã thực sự ngạc nhiên bởi vài gợi ý mà tìm kiếm trang web tùy chỉnh của tôi đã cung cấp; Tôi đã kết thúc bằng cách thêm một số lượng lớn bằng tay trong bảng điều khiển CSE. – jfsaliba

+0

Tuyệt vời, cảm ơn vì điều này nó cũng làm việc cho tôi. Vấn đề duy nhất của tôi là khoảng '.ui-helper-hidden-accessible' hiện xuất hiện ngay trước thẻ body đóng. Đây có phải là cái gì đó có thể được tắt, thay vì thatn bằng cách sử dụng css để ẩn nó? – onebitrocket

1

Tại thời điểm viết (tháng năm 2013), có một cách khá dễ dàng nhận autocompletion trong khi vẫn nhận được kết quả như XML:

<gcse:searchbox-only enableAutoComplete="true" resultsUrl="#"></gcse:searchbox-only>

  • Các "lừa" là bạn có thể chỉ định "resultsUrl" có nghĩa là bạn có thể trực tiếp kết quả tìm kiếm thực tế để một trang web mà bạn tạo ra qua API XML, mà không cần phải thực hiện việc tìm kiếm hộp UX mình.