Get URL Parameters from Client Script

Community Alums
Not applicable

Hello All,

I am trying to get the URL parameters from the onLoad Client script when catalog item is loaded, here we are using an issue where in few scenarios the complete URL is getting loaded before the client scripts are running where in some scenarios the URL is loading after the client scripts ran, and resulting in null parameter values.

Example :

 scenarios 1: URL is like (com.glideapp.servicecatalog_cat_item_view.do?v=1&&sysparm_id=SYS_ID&sysparm_myparm=SYS_ID)

Here parameter values are getting properly and URL is getting loaded at once.

scenarios 2: URL is like (nav_to.do?uri=%2Fcom.glideapp.servicecatalog_cat_item_view.do%3Fv%3D1%26%26sysparm_id%3Da86e23491b64ac906417542d1e4bcbe0%26sysparm_myparm%3D70d0e7a2db3d381089ab6e9d13961914)

Here parameter values are getting as null because first a portion of URL is getting loaded(service-now.com/nav_to.do) and then the remaining url is getting appended.

Is there a way to hold the client script or any other way to achieve this?

Regards,

Prudhvi  

1 ACCEPTED SOLUTION

Hi,

Use this updated code for getParameterValue function. This will work for both the views as well as Service Portal

    function getParameterValue(name) {
        var url = top.location.href;
        var value = new URLSearchParams(url).get(name);
        if (value) {
            return value;
        }
        if (!value) {
            var gUrl = new GlideURL();
            gUrl.setFromCurrent();
            value = gUrl.getParam("sysparm_id");
            return value;
        }
    }
Thank you,
Palani

View solution in original post

17 REPLIES 17

I am able to get the full url in my alert. But not getting the parameters.
This script is not working in my SOW workspace. Is there any fix for this?

alert(getParameterValue("sysparm_caller"));

function getParameterValue(name) {
    var url = top.location.href;
	alert(url);
	var value = new URLSearchParams(url).get(name);
	if (value) {
     return value;
 }
 if (!value) {
     var gUrl = new GlideURL();
     gUrl.setFromCurrent();
     value = gUrl.getParam("sysparm_id");
     return value;
 }

 

Did you find any solutin to this

 

@Roswan007 

Please post a new question and tag me there and share all the question details with screenshot.

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