How to dot walk with script include returned value on GlideAJAX client script

Johny1
Tera Expert

Hello folks,

I want to dot walk with the answer on client script.

Eg: answer.support_group

Script Include:

_getCIRelationship: function(ciSysId) {
		var cmdbRelCi = new GlideRecord('cmdb_rel_ci');
	        cmdbRelCi.addQuery('child',ciSysId);
		cmdbRelCi.addEncodedQuery('parent.ref_service_offering.service_classification=Supplier Offering');
		cmdbRelCi.query();
		if(cmdbRelCi.next()){
			if(cmdbRelCi.parent.sys_class_name == 'service_offering') {
				return cmdbRelCi.getValue('parent');

Client Script:

var cI = g_form.getValue('cmdb_ci'); 
	var ga = new GlideAjax('SupplierOfferingFinder');
	ga.addParam('sysparm_name', 'getSupplierOfferingForCI');
	ga.addParam('sysparm_ci_sys_id', cI);  
	ga.getXML(setSupplierOffering);
	
	function setSupplierOffering(response) {
		var answer = response.responseXML.documentElement.getAttribute('answer');
		
	 g_form.setValue('u_supplier_offering',answer);
g_form.setValue('assignment_group',answer.support_group); // this statement not working
		
	}

 

Thank you

1 ACCEPTED SOLUTION

LOL that is certainly understandable as there is lots of back and forth in this posting. To summarize here are the working scripts.

Script Include:

_getCIRelationship: function(ciSysId) {
    var answer = {};
    var cmdbRelCi = new GlideRecord('cmdb_rel_ci');
    cmdbRelCi.addQuery('child', ciSysId);
    cmdbRelCi.addEncodedQuery('parent.ref_service_offering.service_classification=Supplier Offering');
    cmdbRelCi.query();
    if (cmdbRelCi.next()) {
        if (cmdbRelCi.parent.sys_class_name == 'service_offering') {
            answer.parent = cmdbRelCi.getValue('parent');
            answer.support_group = cmdbRelCi.parent.support_group.toString();
        }

        return JSON.stringify(answer);
    }
}

 

Client Script:

function onChange(control, oldValue, newValue, isLoading, isTemplate) {

    if (!newValue) {
        g_form.clearValue('u_supplier_offering');
        g_form.clearValue('assignment_group');
        return;
    }

    var cI = newValue;
    var ga = new GlideAjax('SupplierOfferingFinder');
    ga.addParam('sysparm_name', 'getSupplierOfferingForCI');
    ga.addParam('sysparm_ci_sys_id', cI);
    ga.getXMLAnswer(setSupplierOffering);

    function setSupplierOffering(response) {
        var answer = JSON.parse(response);
        var populated = false;
        for (var prop in answer) {
            if (response.hasOwnProperty(prop)) {
                populated = true;
            }
        }

        if (populated) {
            g_form.setValue('u_supplier_offering', answer.parent);
            g_form.setValue('assignment_group', answer.support_group);
        }

    }
}

 

Cheers,

David

View solution in original post

11 REPLIES 11

LOL that is certainly understandable as there is lots of back and forth in this posting. To summarize here are the working scripts.

Script Include:

_getCIRelationship: function(ciSysId) {
    var answer = {};
    var cmdbRelCi = new GlideRecord('cmdb_rel_ci');
    cmdbRelCi.addQuery('child', ciSysId);
    cmdbRelCi.addEncodedQuery('parent.ref_service_offering.service_classification=Supplier Offering');
    cmdbRelCi.query();
    if (cmdbRelCi.next()) {
        if (cmdbRelCi.parent.sys_class_name == 'service_offering') {
            answer.parent = cmdbRelCi.getValue('parent');
            answer.support_group = cmdbRelCi.parent.support_group.toString();
        }

        return JSON.stringify(answer);
    }
}

 

Client Script:

function onChange(control, oldValue, newValue, isLoading, isTemplate) {

    if (!newValue) {
        g_form.clearValue('u_supplier_offering');
        g_form.clearValue('assignment_group');
        return;
    }

    var cI = newValue;
    var ga = new GlideAjax('SupplierOfferingFinder');
    ga.addParam('sysparm_name', 'getSupplierOfferingForCI');
    ga.addParam('sysparm_ci_sys_id', cI);
    ga.getXMLAnswer(setSupplierOffering);

    function setSupplierOffering(response) {
        var answer = JSON.parse(response);
        var populated = false;
        for (var prop in answer) {
            if (response.hasOwnProperty(prop)) {
                populated = true;
            }
        }

        if (populated) {
            g_form.setValue('u_supplier_offering', answer.parent);
            g_form.setValue('assignment_group', answer.support_group);
        }

    }
}

 

Cheers,

David

Thank you Paul for the solution.