여러 레코드를 얻는 Ajax 호출
개요
다음과 같이 선택된 여러 사용자 레코드의 이메일 주소를 검색하는 양식을 만듭니다.
양식
1. 사용자 선택과 선택한 사용자의 이메일 주소를 표시하는 두 개의 필드를 만듭니다.
컨테이너 변수는 필드의 너비를 줄이는 데 사용됩니다.
2. 변수 사용자를 List Collector 유형으로 만듭니다.
3. 「리스트 콜렉터」타입은 디폴트에서는 선택 가능한 항목 일람과 선택된 항목 일람의 2개의 일람을 표시합니다만, 이번은 일람을 하나로 하기 위해서 항목 변수의 속성에 「glide_list」를 지정합니다.
4. 이메일 주소 유형은 "다중 줄 텍스트"로 설정합니다.
스크립트 인클루트
서버 측에서 실행되는 스크립트를 작성합니다.
function onChange(control, oldValue, newValue, isLoading) {
if (isLoading || newValue == '') {
return;
}
var ajax = new GlideAjax('getUserEmail'); //呼び出すスクリプトインクルード名
ajax.addParam('sysparm_name', 'getEmail'); //呼び出すメソッド名
ajax.addParam('sysparm_uid', newValue); //引き渡す値。選択されたユーザのsys_id(コンマ区切り)
ajax.getXMLAnswer(function(answer) { //サーバスクリプトを呼び出す
if (answer.length > 0) { //メールアドレスを取得できた場合はメールアドレスをメール一覧フィールに設定
var emailArray = answer.split(',').sort(); //コンマ区切りのメールアドを配列に変換
g_form.setValue('email_addresses', emailArray.join('\r\n')); //配列を改行区切りの文字列に変換してメールフィールドに設定
}
});
}
스크립트 포함
주의가 필요하기 때문에 push() 하는 요소가 String 가 아니면 최초의 값이 반복해 추가되는 것입니다. 각 레코드 데이터를 올바르게 추가하려면 값을 toString()하여 문자열로 변환합니다.
var getUserEmail = Class.create();
getUserEmail.prototype = Object.extendsObject(AbstractAjaxProcessor, {
getEmail: function() {
var user_ids = this.getParameter('sysparm_uid'); //クライアントから送られて来るユーザのsys_idを取得。sys_idはコンマ区切り
var user_lookup = new GlideRecord('sys_user'); //ユーザテーブルを参照する
user_lookup.addQuery('sys_id', 'IN', user_ids); //user_idsに含まれるsys_idを取得
user_lookup.query(); //クエリーを実行
var returnArray = []; //結果を保管する配列
while (user_lookup.next()) { //結果レコードをループ
returnArray.push(user_lookup.email.toString()); //結果レコードのメールアドを配列に追加
}
return returnArray.join(','); //配列をコンマ区切り文字列に変換
},
type: 'getUserEmail'
});
Reference
이 문제에 관하여(여러 레코드를 얻는 Ajax 호출), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/htshozawa/items/819879699441da82ae1f
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
1. 사용자 선택과 선택한 사용자의 이메일 주소를 표시하는 두 개의 필드를 만듭니다.
컨테이너 변수는 필드의 너비를 줄이는 데 사용됩니다.
2. 변수 사용자를 List Collector 유형으로 만듭니다.
3. 「리스트 콜렉터」타입은 디폴트에서는 선택 가능한 항목 일람과 선택된 항목 일람의 2개의 일람을 표시합니다만, 이번은 일람을 하나로 하기 위해서 항목 변수의 속성에 「glide_list」를 지정합니다.
4. 이메일 주소 유형은 "다중 줄 텍스트"로 설정합니다.
스크립트 인클루트
서버 측에서 실행되는 스크립트를 작성합니다.
function onChange(control, oldValue, newValue, isLoading) {
if (isLoading || newValue == '') {
return;
}
var ajax = new GlideAjax('getUserEmail'); //呼び出すスクリプトインクルード名
ajax.addParam('sysparm_name', 'getEmail'); //呼び出すメソッド名
ajax.addParam('sysparm_uid', newValue); //引き渡す値。選択されたユーザのsys_id(コンマ区切り)
ajax.getXMLAnswer(function(answer) { //サーバスクリプトを呼び出す
if (answer.length > 0) { //メールアドレスを取得できた場合はメールアドレスをメール一覧フィールに設定
var emailArray = answer.split(',').sort(); //コンマ区切りのメールアドを配列に変換
g_form.setValue('email_addresses', emailArray.join('\r\n')); //配列を改行区切りの文字列に変換してメールフィールドに設定
}
});
}
스크립트 포함
주의가 필요하기 때문에 push() 하는 요소가 String 가 아니면 최초의 값이 반복해 추가되는 것입니다. 각 레코드 데이터를 올바르게 추가하려면 값을 toString()하여 문자열로 변환합니다.
var getUserEmail = Class.create();
getUserEmail.prototype = Object.extendsObject(AbstractAjaxProcessor, {
getEmail: function() {
var user_ids = this.getParameter('sysparm_uid'); //クライアントから送られて来るユーザのsys_idを取得。sys_idはコンマ区切り
var user_lookup = new GlideRecord('sys_user'); //ユーザテーブルを参照する
user_lookup.addQuery('sys_id', 'IN', user_ids); //user_idsに含まれるsys_idを取得
user_lookup.query(); //クエリーを実行
var returnArray = []; //結果を保管する配列
while (user_lookup.next()) { //結果レコードをループ
returnArray.push(user_lookup.email.toString()); //結果レコードのメールアドを配列に追加
}
return returnArray.join(','); //配列をコンマ区切り文字列に変換
},
type: 'getUserEmail'
});
Reference
이 문제에 관하여(여러 레코드를 얻는 Ajax 호출), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/htshozawa/items/819879699441da82ae1f
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
function onChange(control, oldValue, newValue, isLoading) {
if (isLoading || newValue == '') {
return;
}
var ajax = new GlideAjax('getUserEmail'); //呼び出すスクリプトインクルード名
ajax.addParam('sysparm_name', 'getEmail'); //呼び出すメソッド名
ajax.addParam('sysparm_uid', newValue); //引き渡す値。選択されたユーザのsys_id(コンマ区切り)
ajax.getXMLAnswer(function(answer) { //サーバスクリプトを呼び出す
if (answer.length > 0) { //メールアドレスを取得できた場合はメールアドレスをメール一覧フィールに設定
var emailArray = answer.split(',').sort(); //コンマ区切りのメールアドを配列に変換
g_form.setValue('email_addresses', emailArray.join('\r\n')); //配列を改行区切りの文字列に変換してメールフィールドに設定
}
});
}
주의가 필요하기 때문에 push() 하는 요소가 String 가 아니면 최초의 값이 반복해 추가되는 것입니다. 각 레코드 데이터를 올바르게 추가하려면 값을 toString()하여 문자열로 변환합니다.
var getUserEmail = Class.create();
getUserEmail.prototype = Object.extendsObject(AbstractAjaxProcessor, {
getEmail: function() {
var user_ids = this.getParameter('sysparm_uid'); //クライアントから送られて来るユーザのsys_idを取得。sys_idはコンマ区切り
var user_lookup = new GlideRecord('sys_user'); //ユーザテーブルを参照する
user_lookup.addQuery('sys_id', 'IN', user_ids); //user_idsに含まれるsys_idを取得
user_lookup.query(); //クエリーを実行
var returnArray = []; //結果を保管する配列
while (user_lookup.next()) { //結果レコードをループ
returnArray.push(user_lookup.email.toString()); //結果レコードのメールアドを配列に追加
}
return returnArray.join(','); //配列をコンマ区切り文字列に変換
},
type: 'getUserEmail'
});
Reference
이 문제에 관하여(여러 레코드를 얻는 Ajax 호출), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/htshozawa/items/819879699441da82ae1f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)