In Script Include while (sr.next()) is not looping, But in Back Ground Script it is working fine.

Sridhar  G
Tera Contributor
This Client Script :-

var
ga = new GlideAjax('rca_technique'); //Scriptinclude
    ga.addParam('sysparm_name', 'getState'); //Method
    ga.addParam('sys_id', g_form.getUniqueValue()); //Parameters
    ga.getXMLAnswer(getResponse);


Script Include which is Client Callable :- 

var
rca_technique = Class.create();
rca_technique.prototype = Object.extendsObject(AbstractAjaxProcessor, {
    getState: function() {
        var sysId = this.getParameter('sys_id');
        var sysId1 = sysId.toString();
        var gr = new GlideRecord('problem');
        gr.addQuery('sys_id', sysId1);
        gr.query();
        while (gr.next()) {
            var answer = gr.getValue('state');
        }
        return answer.toString();
    },
    type: 'rca_technique'
});
SridharG_0-1709874605053.png

In Background Script It is giving correct output 

3 REPLIES 3

Brad Bowman
Kilo Patron
Kilo Patron

You are missing the sysparm identification on the parameter that you are passing from the client to the Script Include, and I'm not sure if it's going to like another underscore, so best to go with something like:

ga.addParam('sysparm_sysid', g_form.getUniqueValue()); //Parameters

This will already be a string, so you don't need to convert it in the server script.

...
var sysId = this.getParameter('sysid');
var gr = new GlideRecord('problem');
gr.addQuery('sys_id', sysId);
...

Danish Bhairag2
Tera Sage
Tera Sage

Hi @Sridhar G ,

 

for passing any values from Client to server side via GlideAjax we use "sysparm" which was missing in ur code for sys id.

 

Try updated code.

 

Client:

var ga = new GlideAjax('rca_technique'); //Scriptinclude
    ga.addParam('sysparm_name', 'getState'); //Method
    ga.addParam('sysparm_sysid', g_form.getUniqueValue()); //Parameters
    ga.getXMLAnswer(getResponse);

 

Server Side:

var rca_technique = Class.create();
rca_technique.prototype = Object.extendsObject(AbstractAjaxProcessor, {
    getState: function() {
        var sysId = this.getParameter('sysparm_sysid');
        var sysId1 = sysId.toString();
        var gr = new GlideRecord('problem');
        gr.addQuery('sys_id', sysId1);
        gr.query();
        while (gr.next()) {
            var answer = gr.getValue('state');
        }
        return answer.toString();
    },
    type: 'rca_technique'
});

 

Thanks,

Danish

 

swathisarang98
Giga Sage
Giga Sage

Hi @Sridhar G ,

 

There are few errors in your code please find the corrected code,

 

Client script:

 

var ga = new GlideAjax('rca_technique'); //Scriptinclude
    ga.addParam('sysparm_name', 'getState'); //Method
    ga.addParam('sysparm_id', g_form.getUniqueValue()); //Parameters
    ga.getXMLAnswer(getResponse);
}
function getResponse(response){
var ans = response.responseXML.documentElement.getAttribute('answer');
alert("line number " + ans);
//write the operation which you want to do (seeting value, making field readonly etc)
}

 

 

script include:

 

var rca_technique = Class.create();
rca_technique.prototype = Object.extendsObject(AbstractAjaxProcessor, {
    getState: function() {
        var sysId = this.getParameter('sysparm_id');
        var gr = new GlideRecord('problem');
        gr.addQuery('sys_id', sysId);
        gr.query();
        while (gr.next()) {
            var answer = gr.getValue('state');
        }
        return answer.toString();
    },
    type: 'rca_technique'
});

 

 

Please mark this comment as Correct Answer/Helpful if it helped you.

Regards,

Swathi Sarang