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

Community Alums
Not applicable

Hi Palani,

The above code is working fine but on portal we are seeing an Javascript error message while loading the form.

find_real_file.png

This because of using GlideURL in client side, is there any other way to get the URL.

find_real_file.png

Regards,

Prudhvi

@Prudhvi Raj 

this should work in both; please test once

var url = top.location.href;
var value = new URLSearchParams(url).get(name);

Regards
Ankur

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

Hi,

Check whether sysparm_myparm is available in Service Portal URL?

I think this is missing

Thank you,

Palani

Thank you,
Palani

Community Alums
Not applicable

Yes Palani,

Initially there is no sysparm_myparm in the url after few clicks the page will be redirected and  sysparm_myparm will be appended to url.

Regards,

prudhvi 

oh got it. GlideURL is not available for ServicePortal. This will be skipped in client script if parameter is present. Let me update the script and confirm you

Thank you,
Palani