simple glideAjax in scoped app killing me

emyrold
Giga Expert

I'm building a small little custom app and the requirement needs me to auto set certain groups based on state.

typically I would do this with assignment rules but I have to also do other things that cannot be done with rules.

That said, I am leveraging UI Policy (if true or if false script blocks).

I have created a glide ajax Script Include in the new custom application scope with client callable checked.

I have created three system properties + system properties category and Module to display the properties in the application.

I have created a UI Policy with condition (state = draft) and then in the execute if true script block I have written a fairly simple glideAjax script.

The issue seems to be with parsing the result.   If I gs.warn() on the script include it correctly logs what I want just before calling "return" to send the results back to the client.

Here is the UI Policy Script:

function onCondition() {

  try {

  g_form.clearValue('assigned_to');

  g_form.setDisplay('assigned_to', false);

  var ga = new GlideAjax('u_docit_ajax');

  ga.addParam('sysparm_name', 'getGSDProperties');

  ga.addParam('sysparm_property', 'x_10032_gtd_dev.sn.developers.group');

  ga.getXML(myCallBack);

  }

  catch(err) {

  console.log(err);

  }

}

function myCallBack(response) {

  var answer = response.responesXML.documentElement.getAttribute("answer");

  alert('my answer is: ' + answer);

  //*** g_form.setValue('fieldname', 'sys_id', 'name') ***//

  //g_form.setValue('assigned_to', answer); //answer is coming back as: 'c0c602364f55d20036988ab18110c7f8', 'SN Developers'

}

Here is my Script Include:

var u_docit_ajax = Class.create();

u_docit_ajax.prototype = Object.extendsObject(global.AbstractAjaxProcessor, {

//u_docit_ajax.prototype = Object.extendsObject(x_10032_gtd_dev.u_docit_ajax.AbstractAjaxProcessor, {

// u_docit_ajax.prototype = Object.extendsObject(AbstractAjaxProcessor, {

  /*

  * @getGSDProperties - GlideAjax function called from client script

  * @sysparm_property - This will be the sys_parameter name passed in from the client

  * @returns - The value of the given property

  */

  getGSDProperties: function() {

  var sysProp         = this.getParameter('sysparm_property');

  gs.warn('***DEBUG: gs.getProperty(sysProp) is: ' + gs.getProperty(sysProp));

  return gs.getProperty(sysProp);

  }

});

Here is an error in the system log when the Script Include is processing:

GlideAjaxError_01.png

And here is a Java console error when the client-side codes runs when form loads:

GlideAjaxError_02.PNG

1 ACCEPTED SOLUTION

HI Emyrold,



You need to have 2 properties or You need to split the property into display name and sys_id and   pass them separately for the   setValue method.



Hope this helps



Thanks


Srini


View solution in original post

26 REPLIES 26

Hi Emyrold,



How about this?



g_form.setValue('assignment_group', g_scratchpad.sn_developers_group, 'SN Developers');



Thanks


Srini


Yes that worked but then it defeats the point of trying to not store any static values in the client script...


Hi Emyrold,



I doubt on your reference qualifier. Would you be able to select the 'SN developers' Group manually for the assignment_group field



Thanks


Srini


Hi Pradeep and Srini,



I just ran another test where I reconfigured things a little.



I changed the system properties to contain single values instead of a string with two parameters and it is working.



BR:


(function executeRule(current, previous /*null when async*/) {


  g_scratchpad.sn_developers_group_sys_id = gs.getProperty('x_10032_gtd_dev.sn.developers.group');   //with value: c0c602364f55d20036988ab18110c7f8   **no quotes


  g_scratchpad.sn_developers_group_name = gs.getProperty('x_10032_gtd_dev.sn.story.owner.group'); //with value:   SN Developers **no quotes


})(current, previous);



client script:


g_form.setValue('assignment_group', g_scratchpad.sn_developers_group_sys_id, g_scratchpad.sn_developers_group_name);



Question: do you think I should be able to have both the first and second parameter in the one property and maybe it is just quoting things when I shouldn't or something like that?



Thanks,


-e


HI Emyrold,



You need to have 2 properties or You need to split the property into display name and sys_id and   pass them separately for the   setValue method.



Hope this helps



Thanks


Srini