GlideAjax call multiple functions
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎08-01-2018 01:19 AM
Hello,
I would like to ask for hint of solution over GlideAjax.
I have UI Action, which works completely as Client side button and calls GlideAjax.
In this Ajax script include is a very time consuming function, from fhich I would like to push some info on states.
Sadly, Ajax is only one-time request-response, so I need to ask for state in some intervals.
The idea is this, but I am pretty sure this will not work, because in this solution, I will rewrite GlideAjax object and I belive, the first response will be lost, same as any other in the interval:
UI Action:
==========
var syncGA = new GlideAjax("Sync_ScriptInclude_Ajax");
syncGA.addParam('sysparm_name', 'timeConsumingOperation');
syncGA.addParam('sysparm_parm1', "...");
syncGA.getXML(parseDoneResponse);
function parseDoneResponse(response) {
//operation was done, say Done to user
clearInterval(check);
}
var check = setInterval(function(){
syncGA.addParam('sysparm_name', 'getState');
syncGA.getXMLWait(parseState);
}, 3000);
function parseState(response) {
//update state message, percentage, whatever
}
Script Include
==============
var Sync_ScriptInclude_Ajax = Class.create();
Sync_ScriptInclude_Ajax.prototype = Object.extendsObject(AbstractAjaxProcessor, {
initialize:function(){
this.result = [];
},
timeConsumingOperation:function(){
//some logic, lets say GlideRecord here with result
while(step-by-step){
this.result.push(step-result);
}
},
getState:function(){
return JSON.stringify(this.result);
},
type: 'Sync_ScriptInclude_Ajax'
});
Is this somehow possible? Or s there any other fancy way, how to do this?
Thanks in advance 🙂
- Labels:
-
Scripting and Coding

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎08-01-2018 02:02 AM
Hi Pavel,
I have understood that you would like to invoke the AJAX call every 3 seconds repeatedly. Is that correct?
Why are you using the getXMLWait function there? I am sure you know, that this is the synchronous call.
Did you try to figure out, how the built-in auto-refresh works? that might point you into the right direction.
Another idea - which will only work for a limited amount of stated/messages of course - is to get the information in the first round-trip and store them in the g_scratchpad on client side.
Kind regards
Seb
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎08-01-2018 02:14 AM
The problem is, that I need to call 2 functions, that are in one instance of GlideAjax.
That XMLWait is there intentionally as I don't want to tick the interval untill I get the response.
The core of the issue is, If there exists a way, how to call 2 spearate functions in same script inclide instance within one GlideAjax definition.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎08-01-2018 02:20 AM
You could call another function from one function in script include itself.
this.getState();
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎08-01-2018 02:33 AM