g_form.addOption() is not working inside GlideAjax callback function

HoangT551406063
Tera Contributor

I have a MRVS have a field have type is Select Box, in my onLoad client script have a callback function in GlideAjax to get question choice in order to add options to select box field. I tried to log the response and it working correctly. but when I call g_form.addOption() outside the callback function then the option is added correctly but when I tried to call it inside the callback function it is not working. Please help.

//old options is cleared before this line        
var optionAjax = new GlideAjax('scoped_app.script_include');
        optionAjax.addParam('sysparm_name', 'functionname');
        optionAjax.addParam('sysparm_question_id', varId);
        // g_form.addOption('value_select_box', choiceValue, choiceLabel); this line work correctly but the addOption line below is not
        optionAjax.getXMLAnswer(function(response) {
            var res = JSON.parse(response); //[{'option_value':'value', 'option_text':'text'}]
            for (var i = 0; i < res.length; i++) {
                var choiceValue = res[i].option_value+'';
                var choiceLabel = res[i].option_text+'';
                g_form.addOption('value_select_box', choiceValue, choiceLabel);
//I also tried g_form.addOption('value_select_box', choiceValue, choiceLabel, i+1); but still not working
            }
        });
5 REPLIES 5

An Le
Giga Sage

Hi  ,

There are a couple of things I’d like to validate before answering:

  1. Is value_select_box the internal variable name?
  2. Do you see any errors in the browser console when the page loads or when you perform the action with F12 Developer Tools open?

Kind regards,

 

Hi, 

1. value_select_box is the internal variable name

2. There is no browser error when the page is load

In addition, i want the options to be add correctly on workspace, but when i tried to perform the action in ClassicUI the issue still happened 

Thanks so much,

Ankur Bawiskar
Tera Patron

@HoangT551406063 

are you sure the JSON parsing is iterating properly?

did you check the length?

//old options is cleared before this line        
var optionAjax = new GlideAjax('scoped_app.script_include');
optionAjax.addParam('sysparm_name', 'functionname');
optionAjax.addParam('sysparm_question_id', varId);
// g_form.addOption('value_select_box', choiceValue, choiceLabel); this line work correctly but the addOption line below is not
optionAjax.getXMLAnswer(function(response) {
    var res = JSON.parse(response); //[{'option_value':'value', 'option_text':'text'}]
    alert('length' + res.length);
    for (var i = 0; i < res.length; i++) {
        var choiceValue = res[i].option_value + '';
        var choiceLabel = res[i].option_text + '';
        g_form.addOption('value_select_box', choiceValue, choiceLabel);
        //I also tried g_form.addOption('value_select_box', choiceValue, choiceLabel, i+1); but still not working
    }
});

💡 If my response helped, please mark it as correct and close the thread 🔒— this helps future readers find the solution faster! 🙏

Regards,
Ankur
Certified Technical Architect  ||  10x ServiceNow MVP  ||  ServiceNow Community Leader

i checked the parsed json and the length of the array and there is no error occured, i also check the value of choiceValue and choiceLabel and it's correctly the only incorrect line is the addOption()