Caller Field Auto-Population Issue

Community Alums
Not applicable

Hi, 

Here is a form that users need to fill out. Once the caller field is populated, the machine name and IP address fields should auto-populate, but its not happening. I'm not sure why. Any assistance would be appreciated.

 

Carol6_0-1707220046228.png

 

script include: 

    getIPandMachineName: function() {
        var note = "";
        //var machinename = '';
        var req = this.getParameter("sysparm_user");
        var ast = new GlideRecord("cmdb_ci_hardware");
        ast.addQuery("sys_class_name""6f2bacd8dbd19450655c5bd05b9619f9");
        ast.addQuery("assigned_to", req);
        ast.addQuery("install_status""1");
        //ast.addQuery("sys_id", srn);
        ast.query();
        if (!ast.hasNext()) {
            gs.addInfoMessage("No Asset assigned to user");
        } else {
            while (ast.next()) {
                var ipandmachinename = {
                    "machine_name": ast.name.getValue(),
                    "ip_address": ast.ip_address.getValue()
                };
            }
            return JSON.stringify(ipandmachinename);
        }
    },
 
client script: 
Type:OnChange
Variable name: caller
function onChange(control, oldValue, newValue, isLoading) {
    if (isLoading || newValue == '') {
        return;
    }
    var caller = g_form.getValue('caller_id');

  var ga = new GlideAjax("machineDetails");
    ga.addParam("sysparm_name""getIPandMachineName");
    ga.addParam("sysparm_user",newValue);
    ga.getXML(setalert);

function setalert(response){
    var answer = response.responseXML.documentElement.getAttribute("answer");
    alert(answer);
    g_form.setValue('machine_name', answer);
    g_form.setValue('ip_address', answer);
    }
}
 
1 ACCEPTED SOLUTION

Jyoti Jadhav9
Tera Guru

Hi @Community Alums ,

 

Please refer to the below script and make the change in query condition as per your requirement:

ScriptInclude:

var machineDetails = Class.create();
machineDetails.prototype = Object.extendsObject(AbstractAjaxProcessor, {
    getIPandMachineName: function() {
        var note = "";
        //var machinename = '';
        var req = this.getParameter("sysparm_user");
        var ast = new GlideRecord("cmdb_ci_hardware");
       //ast.addQuery("sys_class_name", "6f2bacd8dbd19450655c5bd05b9619f9");
        //ast.addQuery("assigned_to", req);
        //ast.addQuery("install_status", "1");
        //ast.addQuery("sys_id", srn);
        ast.addEncodedQuery("sys_class_name=cmdb_ci_computer^assigned_to="+req+"^install_status=1");
        ast.query();
        if (!ast.hasNext()) {
            gs.addInfoMessage("No Asset assigned to user");
        } else {
            while (ast.next()) {
                var ipandmachinename = {};
                ipandmachinename.machine_name = ast.name.getValue();
                ipandmachinename.ip_address = ast.ip_address.getValue();                
            }
            return JSON.stringify(ipandmachinename);
        }
    },

    type: 'machineDetails'
});

=================================================================================

Client Script:

Type:OnChange
Variable name: caller
function onChange(control, oldValue, newValue, isLoading) {
   if (isLoading || newValue == '') {
      return;
   }

   //Type appropriate comment here, and begin script below
   var caller = g_form.getValue('caller_id');

  var ga = new GlideAjax("machineDetails");
    ga.addParam("sysparm_name", "getIPandMachineName");
    ga.addParam("sysparm_user",newValue);
    ga.getXML(setalert);

function setalert(response){
    var answer = response.responseXML.documentElement.getAttribute("answer");
    var answer1 = JSON.parse(answer);
    g_form.setValue('machine_name', answer1.machine_name);
    g_form.setValue('ip_address', answer1.ip_address);
    }
}
 
O/P:
Jyoti4_0-1707229160453.png     Jyoti4_2-1707229245857.png

 

 

Please hit the like button if my suggestion has helped you in any way.
Please mark correct if my response has solved your query.

 

Thanks & Regards

Jyoti Jadhav

 

View solution in original post

14 REPLIES 14

Harish KM
Kilo Patron
Kilo Patron

Hi @Community Alums the below line is wrong in your script include

ast.addQuery("sys_class_name", "sysid");// here your looking for class name of CI, but you have put "sysid"

Regards
Harish

Community Alums
Not applicable

Updated , added the actual class sysid which is  "computer". 

Harish KM
Kilo Patron
Kilo Patron

Hi @Community Alums here is the updated code

getIPandMachineName: function() {
var assetDetails = {};
var req = this.getParameter("sysparm_user");
var ast = new GlideRecord("cmdb_ci_hardware");
// ast.addQuery("sys_class_name", "sysid"); // invalid query
ast.addQuery("assigned_to", req);
ast.addQuery("install_status", 1);
ast.query();
if (!ast.hasNext()) {
return "No Record Found";
} else {
while (ast.next()) {

assetDetails.machine_name= ast.getValue('name');
assetDetails.ip_address = ast.getValue('ip_address');

}
var answer = JSON.stringify(assetDetails);
return answer;
}
},

 

client script:

function onChange(control, oldValue, newValue, isLoading) {
if (isLoading || newValue == '') {
return;
}
var caller = g_form.getValue('caller_id');

var ga = new GlideAjax("machineDetails");
ga.addParam("sysparm_name", "getIPandMachineName");
ga.addParam("sysparm_user",newValue);
ga.getXMLAnswer(setalert);

function setalert(answer){

alert(JSON.stringify(answer,null,4));
g_form.setValue('machine_name', answer.machine_name);
g_form.setValue('ip_address', answer.ip_address);
}
}

Regards
Harish

Community Alums
Not applicable

still doesn't populate the machine name and ip address field. 

 

Regards 

C