Script include not working on client side - on change
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-07-2023 05:30 AM
Hi All,
I have a script Include as shown below:
var checkUserEmail = Class.create();
checkUserEmail.prototype = {
initialize: function() {
},
validateUser: function() {
var answer = '';
var getEmail = this.getParameter('sysparm_getemail');
var grgetEmail = new GlideRecord("sys_user");
grgetEmail.addEncodedQuery("active=true^email!=NULL");
grgetEmail.addQuery("email",getEmail);
//gr.setLimit(1);
grgetEmail.query();
if(grgetEmail.next()){
answer = 'false';
}
else{
answer = 'true';
}
return answer;
} ,
type: 'checkUserEmail'
};
and is client callable.
I just have a "Email" string field variable on a catalog item and I need to compare the email entered (on change) everytime the user enters any value in it it has to check the user table for any occurence and if there is an entry it has to show an error.
I have the below client script however it returns null value from script include side
function onChange(control, oldValue, newValue, isLoading) {
if (isLoading || newValue == '') {
return;
}
var email = g_form.getValue('user_email').toString();
alert(email);
var ga = new GlideAjax('checkUserEmail');
ga.addParam('sysparm_name', "validateUser");
ga.addParam('sysparm_getemail', newValue);
alert(newValue);
ga.getXML(getResponse);
function getResponse(response) {
var res = response.responseXML.documentElement.getAttribute("answer");
alert(res);
}
}
Thhis res returns null. Need help on the same.
TIA
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-07-2023 05:34 AM - edited 11-07-2023 05:37 AM
Hi @DB1
Your Script Include is not Client Callable one.
var checkUserEmail = Class.create();
checkUserEmail.prototype = Object.extendsObject(AbstractAjaxProcessor, {
validateUser: function() {
var answer = '';
var getEmail = this.getParameter('sysparm_getemail');
var grgetEmail = new GlideRecord("sys_user");
grgetEmail.addEncodedQuery("active=true^email!=NULL");
grgetEmail.addQuery("email", getEmail);
//gr.setLimit(1);
grgetEmail.query();
if (grgetEmail.next()) {
answer = 'false';
} else {
answer = 'true';
}
return answer;
},
type: 'checkUserEmail'
});
Cheers,
Tai Vu
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-07-2023 05:35 AM - edited 11-07-2023 05:36 AM
Hi @DB1
Change the script to the following one and make sure it is client callable.
var checkUserEmail = Class.create();
checkUserEmail.prototype = Object.extendsObject(AbstractAjaxProcessor, {
validateUser: function() {
var answer = '';
var getEmail = this.getParameter('sysparm_getemail');
var grgetEmail = new GlideRecord("sys_user");
grgetEmail.addEncodedQuery("active=true^email!=NULL");
grgetEmail.addQuery("email", getEmail);
//gr.setLimit(1);
grgetEmail.query();
if (grgetEmail.next()) {
answer = 'false';
} else {
answer = 'true';
}
return answer;
},
type: 'checkUserEmail'
});
Please mark my answer helpful and accept as solution if it helped 👍✔️
Anvesh
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-07-2023 05:37 AM
The script doesn't looks like client callable if a script include is client callable, it should be extended with AbstractAjaxProcessor and it should be look like below:
var test = Class.create();
test.prototype = Object.extendsObject(AbstractAjaxProcessor, {
validateUser:function(){
//Your code here
}
type: 'test'
});
Do one thing
1) Copy your function from the code (just your function)
2) Delete the current script include
3) Create a new script include and made client callable active true before saving the record
4) Then paste your function there and it should work
If my answer solved your issue, please mark my answer as ✅ Correct & 👍Helpful based on the Impact.