GlideAjax - クライアント
GlideAjax クラスを使用すると、クライアントスクリプトがスクリプトインクルードのサーバー側コードを呼び出すことができます。
GlideAjax をクライアントスクリプトで使用するには、次の一般的な手順に従います。
- GlideAjax インスタンスを GlideAjax コンストラクタ呼び出すことによって作成します。コンストラクタへの引数として、呼び出すメソッドを含むスクリプトインクルードクラスの名前を指定します。
- addParam メソッドと sysparm_name パラメーターを呼び出し、そして呼び出すスクリプトインクルードメソッドの名前を指定します。
- オプション。addParam メソッドを 1 回以上呼び出して、必要な他のパラメーターをスクリプトインクルードコードに提供します。
- getXML() 呼び出してサーバー側のコードを実行します。 注:getXML() は非同期で他のクライアントコードの実行を保持しないため、コードを実行するための優先メソッドです。また、 getXMLWait() も利用可能ですが、推奨されていません。 getXMLWait() の使用は実行の順序が保証されますが、アプリケーションが応答しないように見えることがあり、アプリケーションを使用するアプリケーションのユーザー エクスペリエンスが大幅に低下します。 getXMLWait() Scoped アプリケーションでは使用できません。
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(String 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'
});
lideAjax - addParam(String parm_name, String parm_value)
このGlideAjax オブジェクトに関連するサーバー側の関数に渡すパラメーターの名前と値を指定します。
addParam をさまざまなパラメーターと値で複数回実行することができます。
注:
addParam の最初の呼び出しで、sysparm_name パラメーターと、呼び出すサーバー側メソッドの名前を指定します。サーバー側のコードは、クライアントスクリプトが getXML() または getXMLAnswer() を呼び出すまで実行されません。
| 名前 | タイプ | 説明 |
|---|---|---|
| parm_name | 文字列 | 渡すパラメーターの名前(名前は sysparm_ で始まる必要があります。) |
| parm_value | 文字列 | 割り当て先の値 parm_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 - getAnswer()
getXMLWait() を通じてクライアントから呼び出されたサーバー側のメソッドから結果を取得します。
| 名前 | タイプ | 説明 |
|---|---|---|
| none |
| タイプ | 説明 |
|---|---|
| なし | getXMLWait() と以前に呼び出されたサーバー側メソッドによって返された結果です。 |
GlideAjax - getXMLAnswer(関数 callback, オブジェクト additionalParam, オブジェクト responseParam)
プロセッサーを非同期に呼び出し、応答の回答要素を XML 形式で取得します。
| 名前 | タイプ | 説明 |
|---|---|---|
| callback | 関数 | コールバック関数です。この関数は、 XML 形式の対応の応答要素を引数として受け取ります。 |
| additionalParam | オブジェクト | オプション。追加パラメーターの名前/値ペアです。 |
| responseParam | オブジェクト | オプション。コールバック関数の 2 番目の引数です。 |
| タイプ | 説明 |
|---|---|
| なし |
添付ファイルの数を返します。
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(関数 callback)
このメソッドに関連するメソッドとパラメーターをこの GlideAjax オブジェクトと実行する要求をサーバーに送信します。
サーバーは要求を非同期に処理し、準備ができたらcallback_functionとして指定された関数を介して結果を返します。
| 名前 | タイプ | 説明 |
|---|---|---|
| callback | 関数 | サーバーから返された結果を処理するコールバック関数の名前 |
| タイプ | 説明 |
|---|---|
| なし |
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() Scoped アプリケーションでは使用できません。
| 名前 | タイプ | 説明 |
|---|---|---|
| none |
| タイプ | 説明 |
|---|---|
| なし |
var ga = new GlideAjax('HelloWorld');
ga.addParam('sysparm_name','helloWorld');
ga.addParam('sysparm_user_name',"Bob");
ga.getXMLWait();
alert(ga.getAnswer());