The Opensearch Suggestions spec defines a JSON format that’s incompatible with JQueryUI’s autocomplete. Here’s a way to make it work.
JQueryUI Autocomplete plugin expects results to come back as a flat array, e.g.
["comme", "comment", "communication", "committee"]
But the OpenSearch Suggestions spec returns an array of 2-4 elements, which include at least the original term, and the array of completions:
["comm", ["comme", "comment", "communication", "committee"]]
Try to hook them up as-is, and JQueryUI’s autocopmlete will only see the term itself as a suggestion. Not an extremely helpful suggestion.
We can override autocomplete’s source
function to pull out the array from the JSON response (as of JQuery 1.9 / JQueryUI 1.10):
$("#query").autocomplete({ source: function(request, response) { $.ajax({ url: "http://en.wikipedia.org/w/api.php", dataType: "jsonp", data: { 'action': "opensearch", 'format': "json", 'search': request.term }, success: function(data) { response(data[1]); } }); } });
Try it live on jsfiddle.net
Note that we can’t just use a response
listener, as the array of suggestions in the 2nd position has already been flummoxed by that point. We have to do the whole request/response manually via a custom source
function.
Thanks to Andrew Whitaker for mentioning this in the process of answering a StackOverflow question on transitioning JQuery versions.