Skip to content

Instantly share code, notes, and snippets.

@chrisobriensp
Last active September 21, 2016 09:23
Show Gist options
  • Select an option

  • Save chrisobriensp/dac8bbda549c028319a2d8961a033e3d to your computer and use it in GitHub Desktop.

Select an option

Save chrisobriensp/dac8bbda549c028319a2d8961a033e3d to your computer and use it in GitHub Desktop.
Demonstrates calling SharePoint search using jQuery AJAX with Promises (in TypeScript). See http://cob-sp.com/SPFX-Promises
// shows function first, then calling code below..
export default class Search {
public GetResultsFromjQueryAjax(query: string, rowLimit: number): Promise<ISearchResult> {
var self: Search = this;
return new Promise<ISearchResult>((resolve, reject) => {
var results: SearchResult[] = new Array();
var url = self.getSearchUrl(query, rowLimit);
$.ajax({
url: url,
dataType: "json",
type: "GET",
headers: { "ACCEPT": "application/json;odata=nometadata" },
context: this
})
.done((data: ISharePointSearchResults) => {
var relevantResults: ISharePointSearchResultsTable =
(data.PrimaryQueryResult !== null) ? data.PrimaryQueryResult.RelevantResults.Table : null;
if (relevantResults !== null) {
console.log("Success executing search query. Fetched " + relevantResults.Rows.length + " results.");
results = self.processSearchResults(relevantResults);
// resolve the promise with our custom object with results..
resolve({Message: 'Success', Results: results});
}
else {
var msg: string = "ERROR: No search results found!";
console.log(msg);
// resolve the promise but with empty results..
resolve({Message: msg, Results: results});
}
})
.fail((jqXHR, textStatus, error) => {
var msg: string = "ERROR executing search query: " + textStatus;
console.log(msg);
// reject the promise with empty results..
reject({Message: msg, Results: results});
return null;
})
.always(() => {
console.log("In always..");
});
});
}
}
// calling code:
Search.GetResultsFromjQueryAjax(self.properties.searchQuery, self.properties.itemLimit).then((data) => {
self.renderResults(data, self.domElement);
}).catch((response) => {
console.log("Error getting results from jQuery AJAX - " + response);
});
}}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment