Takashi7
Tera Contributor

You can receive XML or a simple string by calling a script include from a client script or UI macro.
From experience, it's easiest to receive and parse an encoded json string.
In some cases, using XML is useful. Therefore, we will discuss two cases.

 

Common: Request from client side

var ga = new GlideAjax('scriptIncludeName');
ga.addParam('sysparm_name', 'methodName');
ga.addParam('sysparm_hoge', 'hoge_argument'); // When you want to pass a value
ga.getXML(callback);

function callback(response){
   // I will write later
}

 

 

 

XML Case: Script Include (Server sIde)

var scriptIncludeName= Class.create();
scriptIncludeName.prototype = Object.extendsObject(AbstractAjaxProcessor, {
	
    methodName:function(){
        var param = this.getParameter('sysparm_hoge'); // Get param from client side

        var answer = this.newItem("answer"); // The item name does not have to be "answer"
        answer.setAttribute("result",  "OK");
        answer.setAttribute("argument", param);

        return;  // no argument is required for return
    }
}

XML Case: Call back sample (Client side)

function callback(response){
    // Use getElementsByTagName. The tag name is declared by scriptinclude.
    var answer = response.responseXML.getElementsByTagName("answer");    
    if(answer.length == 0) {
        // length = 0 if node not found
        alert("element['answer'] not found in response data"); 
        return;
    }
    else{
        // Premise that only one 'answer' is added in script include
        alert(answer[0].getAttribute("result"));   // value="OK"
        alert(answer[0].getAttribute("argument")); // value="hoge_argument"
    }
}

 

 

JSON Case: Script Include (Server sIde)

var scriptIncludeName= Class.create();
scriptIncludeName.prototype = Object.extendsObject(AbstractAjaxProcessor, {
	
    methodName:function(){
        var param = this.getParameter('sysparm_hoge'); // Get param from client side

        var jsonData = {
             "result": "OK",
             "argument": param,
        };        
        return JSON.stringify(jsonData); // Encodes json into a string and returns it.
    }
}

JSON Case: Call back sample (Client side)

function callback(response){
    // Use documentElement and "answer" is a fixed value
    var answer =  response.responseXML.documentElement.getAttribute('answer');
    
    try{
        // It's unlikely, but it's better to define exceptions
        answer = JSON.parse(answer); // Convert json string to object
    }
    catch(e){
        alert(e);
        return;
    }
    alert(answer.result);   // value="OK"
    alert(answer.argument); // value="hoge_argument"
}

 

 

Incidentally (Simple string)

var scriptIncludeName= Class.create();
scriptIncludeName.prototype = Object.extendsObject(AbstractAjaxProcessor, {
    methodName:function(){
        return "OK";
    }
}
function callback(response){
    // See the "answer" element as they are
    var answer =  response.responseXML.documentElement.getAttribute('answer');
    alert(answer);   // value="OK"
}

JSON Case is a refinement of this.

Version history
Last update:
‎07-06-2020 04:18 AM
Updated by: