Unable to properly call a UI Script from a Catalog Client Script.

RyoyaFukuda
Tera Contributor

Hi,all.

I am trying to call a UI Script from a Catalog Client Script.
This development is being done within a custom application.

Here is the script. And error message is ''UI Script  x_16799_test.TestUIScript is loaded but can not find dummyFunction or result is fraud. Result: null'
Could you please tell me why the UI Script cannot be called successfully?


Catalog Client Script
Type : onChange

UI Type : All

function onChange(control, oldValue, newValue, isLoading) {
    if (isLoading || newValue == '') {
        return;
    }

    var value = newValue;
    var name = 'u_int_test';
    var uiScriptName = 'x_16799_test.TestUIScript';


    if (typeof g_ui_scripts !== 'undefined') {
        // WorkspaceïĵˆWEPïĵ‰
         g_ui_scripts.getUIScript(uiScriptName).then(function(result) {
        if (result && typeof result.dummyFunction === 'function') {
		//  if (result && typeof result.formatAndTruncateNumber === 'function') {
            g_form.addInfoMessage('UI Script ' + uiScriptName + ' is loaded and find dummyFunction');
            result.dummyFunction();
        } else {
            g_form.addInfoMessage('UI Script ' + uiScriptName + ' is loaded but can not find dummyFunction or  result is fraud.  Result: ' + JSON.stringify(result));
        }
    }).catch(function(error) {
        g_form.addErrorMessage('UI script failed to load: ' + error);
    });
    }
}



UI Script
API:x_16799_test.TestUIScript

(function() {
    return {
        dummyFunction: function() {
            // do noting
        }
    };
})();

 

5 REPLIES 5

Tanushree Maiti
Tera Contributor

Could you please confirm the scope of your catalog client script. From your error message, it seems to be coming for scope issue.


Please mark this response as helpful and hit Like if it assisted you with your question.


Thanks,
Tanushree
Certified Technical Architect | 9xCIS

@Tanushree Maiti 

I am developing a custom application named "Test."
Catalog Client Script and UI Script applications are both "Test".
Do you need any other information?

Can you validate your UI script code. I guess type is missing there.

  • Application: x_16799_test
  • Name: TestUIScript
  • API Name: x_16799_test.TestUIScript
(function() {
        return {
        dummyFunction: function() {
                      alert("Hello from Scoped UI Script!");
        },
        type: "TestUIScript"
    };
})();

- Then initially keep your code simpler (without validation) and test. Once call is successful, add all validation.
- Add Alert to check where it is not responding.
- For UI script load you can try with ScriptLoader as well

 

function onChange(control, oldValue, newValue, isLoading) {
    if (isLoading || newValue == '') {
        return;
    }
// Call the UI script function asynchronously 
g_ui_scripts.getUIScript('x_16799_test.TestUIScript').then(function(result) { 
// Access the function defined in the UI script 
result.dummyFunction(); 
}).catch(function() {
 // Handle cases where the script fails to load 
console.error('x_16799_test.TestUIScript did not load'); 
}); }
 

 

 

 


Please mark this response as helpful and hit Like if it assisted you with your question.


Thanks,
Tanushree
Certified Technical Architect | 9xCIS

Ankur Bawiskar
Tera Patron

@RyoyaFukuda 

you are running this script in native or portal?

Regards,
Ankur
✨ Certified Technical Architect  ||  ✨ 9x ServiceNow MVP  ||  ✨ ServiceNow Community Leader