Your "prefetch" value should reference a javascript object instead of the URL string (see the documentation here).
Try changing it to this:
var labels = new Bloodhound({
datumTokenizer: function (d) {
return Bloodhound.tokenizers.whitespace(d.label);
},
queryTokenizer: Bloodhound.tokenizers.whitespace,
prefetch: {
url: '/sample.json',
filter: function(items) {
return $.map(items, function(item) {
return {
label: item.label,
id: item.id };
});
}
});