Skip to content

Instantly share code, notes, and snippets.

@chucknado
Last active August 29, 2015 14:25
Show Gist options
  • Save chucknado/6fc00abef630dc716724 to your computer and use it in GitHub Desktop.
Save chucknado/6fc00abef630dc716724 to your computer and use it in GitHub Desktop.
A script for for the article "Adding KB search to your website with AJAX" at https://support.zendesk.com/hc/en-us/articles/206287378
document.getElementById('search_btn').addEventListener('click', search_kb, false);
function search_kb(event) {
event.preventDefault();
var search_string = encodeURIComponent(document.getElementById('query').value);
var url = 'https://your_subdomain.zendesk.com/api/v2/help_center/articles/search.json?query=' + search_string;
var my_request = new XMLHttpRequest();
my_request.open('get', url, true);
my_request.onload = show_results;
my_request.onerror = show_error;
my_request.send();
}
function show_error() {
alert('Request error');
}
function show_results() {
clearPreviousResults();
var form = document.getElementById('searchForm');
var resultDiv = document.createElement('div');
resultDiv.id = 'search_results';
document.body.insertBefore(resultDiv, form.nextSibling);
var data = JSON.parse(this.responseText);
if (data.results.length) { // if results exist
var resultList = document.createElement('ul');
resultDiv.appendChild(resultList);
for (var i = 0; i < data.results.length; ++i) {
var article = data.results[i];
var resultItem = document.createElement('li');
resultList.appendChild(resultItem);
resultItem.innerHTML = '<a href="' + article.html_url + '" target="_blank">' + article.title + '</a>';
}
} else { // no results
var result = document.createElement('p');
result.innerHTML = 'No results';
resultDiv.appendChild(result);
}
}
function clearPreviousResults(){
var results = this.document.getElementById('search_results');
if (results) {
results.remove();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment