Need to use variables from client side function in server side function on an UI action.

Reddymahesh
Tera Contributor

I am working on an UI action button, In which I need to use variables from client side function in next server side function . But I am getting undefined values in the description

Below is the code of UI action

///////////////////////////////////////////////////////////////////////////////////////////////////

 

var FirstName;
var LastName;

function ChangeName() {
    FirstName = prompt("Enter Firstname");
    LastName = prompt("Enter Lastname");
    if (FirstName && LastName) {
        alert('Name captured is ' + FirstName + " " + LastName);
    }
    gsftSubmit(null, g_form.getFormElement(), "user_change_name");
}

if (typeof window == 'undefined')
    updateItem();

function updateItem() {
    var gr = new GlideRecord('sc_req_item');
    gr.initialize();
    gr.assignment_group = '4a1d990547056510d2c3b604836d432e'// ServiceNow admin team
    gr.description = 'Change the name to: ' + FirstName + ' ' + LastName;
    gr.insert();
    action.setRedirectURL(current);
}
1 ACCEPTED SOLUTION

Community Alums
Not applicable

Hi @Reddymahesh ,

 

If you want to add to Workspace there is a Workspace tab where you can choose Workspace Form Button to make the UI action appear on the line of UI actions, or Workspace Form Menu to make it appears as a list item in the menu list.

 

If the code for the UI action I provided earlier works for the creation of RITM and can populate description successfully could you please mark the answer as correct? Thank you

View solution in original post

15 REPLIES 15

its not wokring

script include : 

var ChangeName = Class.create();
ChangeName.prototype = {
     testFunc: function() {
        var gr = new GlideRecord('sc_req_item');
        gs.log('script include has been called 160216');
        gr.initialize();
        gr.assignment_group = '4a1d990547056510d2c3b604836d432e'// ServiceNow admin team
        gr.description = 'Change the name to: ' + this.getParameter('sysparm_fullname');
        gr.insert();
},

    type: 'ChangeName'
};
 
/// UI action code 
 
function ChangeName() {
    var first = prompt("Please enter First name");
    var last = prompt("Please enter Last name");
    var fullName = first + ' ' + last;
    alert('1name captured is' + fullName);
    if (fullName != '') {
        alert('name captured is' + fullName);
        var ga = new GlideAjax('ChangeName');
        ga.addParam('sysparm_name''testFunc');
        ga.addParam('sysparm_fullname', fullName);
        ga.getXML(processResponse);
    } else return false;
}

function processResponse(response) {
    var result = response.responseXML.documentElement.getAttribute("answer");
    action.setRedirectURL(current);
}

Community Alums
Not applicable

Hi @Reddymahesh ,

 

Did you see the prompt after clicking the button? and did you get the log "gs.log('script include has been called 160216');"?

 

Your script include need to be Client callable (tick checkbox) and the script is something like this:

var testScriptInclude = Class.create();
testScriptInclude.prototype = Object.extendsObject(AbstractAjaxProcessor, {
    testFunc: function() {
        var gr = new GlideRecord('sc_req_item');
        gr.initialize();
        gr.assignment_group = '4a1d990547056510d2c3b604836d432e'; // ServiceNow admin team
        gr.description = 'Change the name to: ' + this.getParameter('sysparm_fullname');
        gr.insert();
    },

    type: 'testScriptInclude'
});

 

Your UI action: Client checkbox ticked and put the "ChangeName()" to the onclick field. You don't need to fill in 'Action name'.

 

I have tested before giving you solution, I also tested again and it works. Please check your script again.

I am attaching screenshots of script include and UI action here, It is not working I am able to see the prompts but record is not getting created.

 

Reddymahesh_0-1689959549132.pngReddymahesh_1-1689959606787.png

 

Reddymahesh
Tera Contributor

In which scope you tested in code