Takashi7
Tera Contributor
Options
- Post History
- Subscribe to RSS Feed
- Mark as New
- Mark as Read
- Bookmark
- Subscribe
- Printer Friendly Page
- Report Inappropriate Content
on 07-06-2020 04:18 AM
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.
- 11,930 Views