I have chosen to use the ‘query’ method over the ajax method to load remote data. In the select2 documentation the query option isn’t as well documented but i require error handling in my plugin.
The Ajax method lacks custom error handling so i cant chose this option.
My JavaScript:
AJS.$("#spacePicker").auiSelect2({
placeholder: AJS.I18n.getText('csum.import.picker'),
minimumInputLength: 3,
multiple: false,
query: function (options) {
var url = baseUrl + "/rest/csum/1.0/space/search?atl_token=" + atlToken;
var data = {
term: options.term,
spaceKey: currentSpaceKey,
page: options.page,
pageLimit: 25
};
AJS.$.post(url, data, function(results) {
options.callback(results);
});
},
formatResult: function (object, container, query) {
return object.spaceName + " (" + object.key + ")";
},
formatSelection: function (object, container, query) {
return object.spaceName + " (" + object.key + ")";
},
id: function (item) {
return item.key;
},
text: function (item) {
return item.spaceName;
}
});
The above code produces the following in the browser’s console:
batch.js?healthcheck-resources=true&hostenabled=true&locale=en-GB&user-logged-in=true:20 Uncaught TypeError: Cannot read property 'length' of undefined
at i.<anonymous> (batch.js?healthcheck-resources=true&hostenabled=true&locale=en-GB&user-logged-in=true:20)
at Object.callback (batch.js?healthcheck-resources=true&hostenabled=true&locale=en-GB&user-logged-in=true:20)
at Object.success (batch.js?healthcheck-resources=true&hostenabled=true&locale=en-GB&user-logged-in=true:45)
at c (batch.js?locale=en-GB:44)
at Object.fireWith [as resolveWith] (batch.js?locale=en-GB:44)
at u (batch.js?locale=en-GB:44)
at XMLHttpRequest.<anonymous> (batch.js?locale=en-GB:44)
Please indicate how i’ve implemented the query method incorrectly and direct me to a solution.
Thanks in advance