GlideAjax - 클라이언트
GlideAjax 클래스를 사용하면 클라이언트 스크립트가 스크립트 포함에서 서버측 코드를 호출할 수 있습니다.
클라이언트 스크립트에서 GlideAjax 를 사용하려면 다음의 일반 단계를 따르십시오.
- GlideAjax 생성자를 호출하여 GlideAjax 인스턴스를 만듭니다. 생성자에 대한 인수로 호출할 메서드가 포함된 스크립트 포함 클래스의 이름을 지정합니다.
- 호출할 스크립트 포함 메서드의 매개 변수 및 이름을 사용하여 sysparm_nameaddParam 메서드를 호출합니다.
- 옵션입니다. addParam 메서드를 한 번 이상 호출하여 스크립트 포함 코드에 필요한 다른 매개변수를 제공합니다.
- getXML()을 호출하여 서버측 코드를 실행합니다. 주:getXML() 은 비동기식이며 다른 클라이언트 코드의 실행을 지연시키지 않기 때문에 코드 실행에 선호되는 방법입니다. 다른 메서드인 getXMLWait()도 사용할 수 있지만 권장되지는 않습니다. getXMLWait()를 사용하면 실행 순서는 보장되지만 응용 프로그램이 응답하지 않는 것처럼 보일 수 있으므로 응용 프로그램을 사용하는 응용 프로그램의 사용자 환경이 크게 저하될 수 있습니다. 범위가 지정된 애플리케이션에는 getXMLWait()를 사용할 수 없습니다.
var ga = new GlideAjax('HelloWorld'); // HelloWorld is the script include class
ga.addParam('sysparm_name','helloWorld'); // helloWorld is the script include method
ga.addParam('sysparm_user_name',"Bob"); // Set parameter sysparm_user_name to 'Bob'
ga.getXML(HelloWorldParse); /* Call HelloWorld.helloWorld() with the parameter sysparm_user_name set to 'Bob'
and use the callback function HelloWorldParse() to return the result when ready */
// the callback function for returning the result from the server-side code
function HelloWorldParse(response) {
var answer = response.responseXML.documentElement.getAttribute("answer");
alert(answer);
}
GlideAjax - GlideAjax(문자열 class_name)
GlideAjax의 생성자입니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| class_name | 문자열 | 실행할 메서드가 포함된 서버측 클래스의 이름입니다. |
이 예제에서 클라이언트 스크립트는 사용자를 Fred Luddy로 설정한 다음 스크립트 포함을 호출하여 관리자를 가져옵니다.
// client script – contains onLoad function and a callback function
function onLoad() {
var ga = new GlideAjax('GetUserInfo'); // GetUserInfo is the script include name
ga.addParam('sysparm_name','managerName'); // managerName is the function in the script include that we're calling
ga.addParam('sysparm_user_name','fred.luddy'); // set user to Fred Luddy
/* Call GetUserInfo.managerName() with user set to Fred Luddy and use the callback function ManagerParse() to return the result when ready */
ga.getXMLAnswer(ManagerParse);
}
// callback function for returning the result from the script include
function ManagerParse(response) {
alert(response);
}
// GetUserInfo script include
var GetUserInfo = Class.create();
GetUserInfo.prototype = Object.extendsObject(global.AbstractAjaxProcessor, {
managerName: function() {
var userName = this.getParameter("sysparm_user_name");
var grUser = new GlideRecord('sys_user');
grUser.get("user_name", userName);
// Build the payload. You can return additional data if needed.
var result = {
"manager": grUser.getDisplayValue('manager')
};
return JSON.stringify(result);
},
type: 'GetUserInfo'
});
GlideAjax - addParam(String parm_name, String parm_value)
이 GlideAjax 객체와 연결된 서버 측 기능에 전달할 매개변수 이름과 값을 지정합니다.
addParam은 서로 다른 매개변수와 값을 사용하여 여러 번 실행할 수 있습니다.
주:
addParam에 대한 첫 번째 호출은 호출하려는 서버 측 메서드의 매개 변수 sysparm_name 및 이름과 함께 이루어져야 합니다. 서버 측 코드는 클라이언트 스크립트가 getXML() 또는 getXMLAnswer()를 호출할 때까지 실행되지 않습니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| parm_name | 문자열 | 전달할 매개변수의 이름입니다. (이름은 sysparm_ 로 시작해야 합니다.) |
| parm_value | 문자열 | 에 parm_name할당할 값입니다. |
| 유형 | 설명 |
|---|---|
| void |
이 예제에서 클라이언트 스크립트는 사용자를 Fred Luddy로 설정한 다음 스크립트 포함을 호출하여 관리자를 가져옵니다.
// client script – contains onLoad function and a callback function
function onLoad() {
var ga = new GlideAjax('GetUserInfo'); // GetUserInfo is the script include name
ga.addParam('sysparm_name','managerName'); // managerName is the function in the script include that we're calling
ga.addParam('sysparm_user_name','fred.luddy'); // set user to Fred Luddy
/* Call GetUserInfo.managerName() with user set to Fred Luddy and use the callback function ManagerParse() to return the result when ready */
ga.getXMLAnswer(ManagerParse);
}
// callback function for returning the result from the script include
function ManagerParse(response) {
alert(response);
}
// GetUserInfo script include
var GetUserInfo = Class.create();
GetUserInfo.prototype = Object.extendsObject(global.AbstractAjaxProcessor, {
managerName: function() {
var userName = this.getParameter("sysparm_user_name");
var grUser = new GlideRecord('sys_user');
grUser.get("user_name", userName);
// Build the payload. You can return additional data if needed.
var result = {
"manager": grUser.getDisplayValue('manager')
};
return JSON.stringify(result);
},
type: 'GetUserInfo'
});
GlideAjax - getAnswer()
getXMLWait()를 통해 클라이언트에서 호출된 서버측 메서드에서 결과를 검색합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 안 함 |
| 유형 | 설명 |
|---|---|
| void | 이전에 getXMLWait()로 호출된 서버측 메서드에서 반환된 결과입니다. |
GlideAjax - getXMLAnswer(함수 콜백, 객체 additionalParam, 객체 responseParam)
프로세서를 비동기적으로 호출하고 응답의 응답 요소를 XML 형식으로 가져옵니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 콜백 | 함수 | 콜백 함수. 함수는 XML 형식의 응답의 응답 요소를 인수로 수신합니다. |
| additionalParam | 객체 | 옵션입니다. 추가 매개변수의 이름-값 쌍입니다. |
| responseParam | 객체 | 옵션입니다. 콜백 함수의 두 번째 인수입니다. |
| 유형 | 설명 |
|---|---|
| void |
첨부 파일 수를 반환합니다.
function updateAttachmentCount(sysid) {
var ga = new GlideAjax('AttachmentAjax');
ga.addParam('sysparm_type', 'attachmentCount');
ga.addParam('sysparm_value', sysid);
ga.getXMLAnswer(numberOfAttachments, null, sysid); // callback: numberOfAttachments with args (answer, sysid)
}
function numberOfAttachments(answer, sysid) {
// we want to know there are 5 attachments, not 5.0 attachments
var number = parseInt(answer);
var buttons = $$('.attachmentNumber_' + sysid);
if (buttons[0] == undefined)
$('header_attachment_list_label').down().innerHTML = number;
else {
for (var i = 0; i < buttons.length; i++) {
buttons[i].innerHTML = number;
}
}
}
GlideAjax - getXML(함수 콜백)
이 GlideAjax 객체와 관련된 메서드 및 매개변수를 실행하기 위한 요청을 서버에 보냅니다.
서버는 요청을 비동기적으로 처리하고 준비가 되면 로 지정된 callback_function함수를 통해 결과를 반환합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 콜백 | 함수 | 서버에서 반환된 결과를 처리할 콜백 함수의 이름입니다. |
| 유형 | 설명 |
|---|---|
| void |
var comments = gel("dialog_comments").value;
var ga = new GlideAjax('validateComments'); //Call script include to escape text
ga.addParam('sysparm_name', 'validateComments');
ga.addParam('sysparm_comments', comments);
ga.getXML(callback);
return false;
function callback(response) {
var comments = response.responseXML.documentElement.getAttribute("answer");
comments = trim(comments);
if (comments == "") {
//If comments are empty, alert the user and stop submission
alert("Please enter your comments before submitting.");
} else {
//If there are comments, close the dialog window and submit them
GlideDialogWindow.get().destroy(); //Close the dialog window
g_form.setValue("comments", comments); //Set the "Comments" field with comments in the dialog
}
GlideAjax - getXMLWait()
이 GlideAjax 객체와 관련된 메서드 및 매개변수를 실행하기 위한 요청을 서버에 보냅니다.
서버는 요청을 동기적으로 처리하며 완료될 때까지 클라이언트의 추가 요청을 처리하지 않습니다. 결과를 검색하려면 클라이언트가 getAnswer()를 호출해야 합니다. getXMLWait()를 사용하면 실행 순서는 보장되지만 응용 프로그램이 응답하지 않는 것처럼 보일 수 있으므로 응용 프로그램을 사용하는 응용 프로그램의 사용자 환경이 크게 저하될 수 있습니다. 대신 getXML() 을 사용하는 것이 좋습니다.
주:
범위가 지정된 애플리케이션에는 getXMLWait()를 사용할 수 없습니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 안 함 |
| 유형 | 설명 |
|---|---|
| void |
var ga = new GlideAjax('HelloWorld');
ga.addParam('sysparm_name','helloWorld');
ga.addParam('sysparm_user_name',"Bob");
ga.getXMLWait();
alert(ga.getAnswer());