Please help me to debug client script, to parse values from script include to client script

chandan15
Tera Contributor

Hi All,

I have a script include to parse some KB's number, short description and sys_id. Which is working in background script even.

When I am trying to setValue() in client script, it is not working. It is not even passing any single value:-

OnChange Catalog Client script-

function onChange(control, oldValue, newValue, isLoading) {
    if (isLoading || newValue === '') {
        return;
    }

    var fvar = g_form.getValue('find');
    var gagetKB = new GlideAjax('DTTLsoarKBfindANDreplace');
    gagetKB.addParam('sysparm_name', 'getGEMSKB');
    gagetKB.addParam('sysparm_fvariable', fvar);
    gagetKB.getXML(getValue);

    function getValue(response) {
        var answer = response.responseXML.documentElement.getAttribute('answer');
        if (!answer) {
            return;
        }

        try {
            var responseObject = JSON.parse(answer);
            var findingsArray = responseObject.responses;

            for (var i = 0; i < findingsArray.length; i++) {
                var article = findingsArray[i];
                g_form.setValue('serched_itemssss', article.sd); 
            }
        } catch (error) {
        }
    }
}

Script Include Parm-

    getGEMSKB: function() {
        var fvar = this.getParameter('sysparm_fvariable');
        var responseObject = {};

        var gr = new GlideRecord('kb_knowledge');
        gr.addQuery('text', 'CONTAINS', fvar);
        gr.query();

        var responseArray = [];

        while (gr.next()) {
            var responseObj = {};
            responseObj.sd = gr.short_description.toString();
            responseObj.num = gr.number.toString();
            responseObj.sysID = gr.sys_id.toString();
            responseObj.prop = gs.getProperty('instance_name');
            responseArray.push(responseObj);
        }

        responseObject.responses = responseArray;

        return JSON.stringify(responseObject);
    },

 

Please help me to find out the issue.....Thank you

1 REPLY 1

SANDEEP28
Mega Sage

@chandan15 You code looks good. I checked its working in my PDI.

 

Can you check if client callable checkbox is checked in script include and your code should look like as below.

 

 

SANDEEP28_1-1692089397313.png

 

var DTTLsoarKBfindANDreplace = Class.create();
DTTLsoarKBfindANDreplace.prototype = Object.extendsObject(AbstractAjaxProcessor, {

	getGEMSKB: function() {
        var fvar = this.getParameter('sysparm_fvariable');
        var responseObject = {};

        var gr = new GlideRecord('kb_knowledge');
        gr.addQuery('text', 'CONTAINS', fvar);
        gr.query();

        var responseArray = [];

        while (gr.next()) {
            var responseObj = {};
            responseObj.sd = gr.short_description.toString();
            responseObj.num = gr.number.toString();
            responseObj.sysID = gr.sys_id.toString();
            responseObj.prop = gs.getProperty('instance_name');
            responseArray.push(responseObj);
        }

        responseObject.responses = responseArray;

        return JSON.stringify(responseObject);
    },

    type: 'DTTLsoarKBfindANDreplace'
});

 

Also in client script, you are trying set "serched_itemssss" field in for loop. As it is in for loop, only last value will get store into it.

 

If I could help you with your Query then, please hit the Thumb Icon and mark as Correct !!