variable substitution

Shabbir1
Tera Contributor

hii 

 

i need to do variable substitution my http query parameter name is enclave_name and my variable name is enclave_name..if i give any value in script restMessage.setStringParameterNoEscape('enclave_name',  'tes123');mannually its working fine iam getting response.. but i need to do dynamically when ever i select enclave names in enclave_name variable on catalog item i need to populate response in u_comment varible i tried in different ways but its not working sharing script and screen shots kindly help on this 

client script ;;;

 

 

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

}
var ga = new GlideAjax('GetEnclaveData');
ga.addParam('sysparm_name', 'getData');
ga.addParam('sysparm_enclave',g_form.getValue('enclave_name'));
ga.getXMLAnswer(getResponse);
// Get the value of the 'response' variable
function getResponse(answer) {
g_form.setValue('u_comment',answer);

}

}

 

script include;;;

var GetEnclaveData = Class.create();

GetEnclaveData.prototype = Object.extendsObject(AbstractAjaxProcessor, {

getData:function(){
//gs.log('indise SI','sh1');
var queryParam = this.getParameter('sysparm_enclave');
gs.log("check query param 231"+enclaveValue);
var restMessage = new sn_ws.RESTMessageV2('network access', 'GET Enclave Data By Enclave Name');
restMessage.setStringParameterNoEscape('enclave_name','tes123');its working fine static
restMessage.setStringParameterNoEscape('enclave_name', queryParam);its not working dynamic..i have taken enclave_name values in queryParam..in log iam getting the value which i selected on the catalog item
restMessage.setHttpMethod('GET');
var response = restMessage.execute();
gs.log("check enclave response code"+response.getStatusCode(),'sh1');
var responseBody = response.getBody();
gs.log("check enclave response 1"+responseBody,'sh1');
var httpStatus = response.getStatusCode();
gs.log("check enclave response http"+responseBody,'sh1');
if (httpStatus == 200) {
// Store the response body in a variable
gs.setVariable('response', responseBody);
//return JSON.stringify(responseBody);
return (responseBody);

// gs.log("check enclave response"+responseBody);
}
},
type: 'GetEnclaveData'
});

 

Shabbir1_2-1674458219301.png

 

Shabbir1_3-1674458298329.png

 

 

 

 

 

 

4 REPLIES 4

Hayo Lubbers
Kilo Sage

Can you do a queryParam.toString() ?

Hi Hayo lubbers thank you for your response ..i Tried in this two ways but its not working kindly check this 
1 .var enclaveValue =queryParam.toString();
    restMessage.setStringParameterNoEscape('enclave_name',enclaveValue);


2 .restMessage.setStringParameterNoEscape('enclave_name',queryParam.toString());

Can you try and see if you find anything when logging everything for this HTTP Request?

See also : https://www.servicenow.com/community/developer-forum/pass-variable-as-argument-to-setstringparameter...

 

And can you test with restMessage.setStringParameter('enclave_name',queryParam.toString());

restMessage.setStringParameter('enclave_name',queryParam.toString());

 

I Tried this also if i use this iam getting the following error code;

 

statusCode": 500, "errorMessage": "Error while trying to fetch aggregation name with error: local variable 'enaclave_id' referenced before assignment"