i'm using textextjs autocomplete tags
in above example list simple json array.
, want value ajax function.
in case ajax call executed late. expected result disturbed. have on below code
$('#textarea') .textext({ plugins : 'tags autocomplete' }) .bind('getsuggestions', function(e, data) { console.log(1); search_text = (data ? data.query : '') || ''; var urll = 'url_to_get_result'; // call ajax function var suggestionss = getsuggestions(search_text, urll); console.log(4); $("#output1").val(); var list = suggestionss, textext = $(e.target).textext()[0], query = (data ? data.query : '') || ''; $(this).trigger( 'setsuggestions', { result : textext.itemmanager().filter(list, query) } ); }); function getsuggestions(search_text, urll) { console.log(2); $.ajax({ 'url': urll, 'data': {'wt':'json'}, type: 'get', 'success': function(data) { jsonobj = []; var count = data.count.length; for(i=0; i<count; i++) { var name = data.name.docs[i].term_suggest_ngram; autosuggestitem = {} autosuggestitem = '"'+name+'"'; jsonobj.push(autosuggestitem); } var result = json.stringify(jsonobj); availablesearch = json.parse(result); console.log(3); $("#output1").val(availablesearch); }, 'datatype' : 'jsonp', 'jsonp': 'json.wrf' }); var return_val = $("#output1").val(); return return_val; } see console statements, these executed in sequence
1 - 2 - 4 - 3
expected behavior should be
1 - 2 - 3 - 4
can me?
asynchronous answer. code after var suggestionss = getsuggestions(search_text, urll); not wait getsuggestions method complete. lines should go .done() or .success() method of ajax
$('#textarea') .textext({ plugins : 'tags autocomplete' }) .bind('getsuggestions', function(e, data) { console.log(1); ...... var self = $(this); // <--- store reference of getsuggestions(search_text, urll).done(function(){ // <--- .done() method of returned ajax invoked console.log(3); console.log(4); ..... textext = $(e.target).textext()[0], query = (data ? data.query : '') || ''; self.trigger( // <---- stored reference 'setsuggestions', { result : textext.itemmanager().filter(list, query) } ); }); }); function getsuggestions(search_text, urll) { console.log(2); return ajax({ // <---- notice ajax returned here }); }
Comments
Post a Comment