Uncaught SyntaxError

Bobby20
Giga Contributor

I have this Business Rule that keeps returning the follower error and I can't figure out what's wrong: 

"Uncaught error: SyntaxError: Unexpected token: u"

Here's the code:
(function executeRule(current, previous /*null when async*/) {

// Add your code here
try {
var r = new sn_ws.RESTMessageV2('x_275105_iplookup.IPInfo', 'GetIPInfo');
r.setStringParameterNoEscape('specific_field', 'geo');
r.setStringParameterNoEscape('ip_address', 'current.address');
// Convert the json formatted string to a JavaScript Object
var responseObj = JSON.parse(responseBody);
//Set the value of the City field on the IPAddressInfo record
current.city = responseObj.city;
gs.info("City = " + current.city);
current.update();
//override authentication profile
//authentication type ='basic'/ 'oauth2'
//r.setAuthentication(authentication type, profile name);

//set a MID server name if one wants to run the message on MID
//r.setMIDServer('MY_MID_SERVER');

//if the message is configured to communicate through ECC queue, either
//by setting a MID server or calling executeAsync, one needs to set skip_sensor
//to true. Otherwise, one may get an intermittent error that the response body is null
//r.setEccParameter('skip_sensor', true);

var response = r.execute();
var responseBody = response.getBody();
var httpStatus = response.getStatusCode();
}
catch(err) {
gs.info("Uncaught error: " + err);
}
})(current, previous);

1 ACCEPTED SOLUTION

Harsh Vardhan
Giga Patron

second point , why are you using current.update() here

 

Updated Code:

 

 

 

(function executeRule(current, previous /*null when async*/) {

 // Add your code here
try { 
 var r = new sn_ws.RESTMessageV2('x_275105_iplookup.IPInfo', 'GetIPInfo');
 r.setStringParameterNoEscape('specific_field', 'geo');
 r.setStringParameterNoEscape('ip_address',current.address);

 

 var response = r.execute();
 var responseBody = response.getBody();
 var httpStatus = response.getStatusCode();

var responseObj = JSON.parse(responseBody);
gs.info('status code is'+httpStatus )
 current.city = responseObj.city;
 gs.info("City = " + current.city);
 current.setWorkflow(false);
 current.update();

}
catch(err) {
 gs.info("Uncaught error: " + err);
}
})(current, previous);

View solution in original post

13 REPLIES 13

Harsh Vardhan
Giga Patron

can you pass the current.address with out quotes.

r.setStringParameterNoEscape('ip_address', current.address); 

 

check the status code in log. 

Ashutosh Munot1
Kilo Patron
Kilo Patron
r.setStringParameterNoEscape('ip_address', 'current.address');

to be replaced with
r.setStringParameterNoEscape('ip_address', current.address);
 

THanks,
Ashutosh

Harsh Vardhan
Giga Patron

second point , why are you using current.update() here

 

Updated Code:

 

 

 

(function executeRule(current, previous /*null when async*/) {

 // Add your code here
try { 
 var r = new sn_ws.RESTMessageV2('x_275105_iplookup.IPInfo', 'GetIPInfo');
 r.setStringParameterNoEscape('specific_field', 'geo');
 r.setStringParameterNoEscape('ip_address',current.address);

 

 var response = r.execute();
 var responseBody = response.getBody();
 var httpStatus = response.getStatusCode();

var responseObj = JSON.parse(responseBody);
gs.info('status code is'+httpStatus )
 current.city = responseObj.city;
 gs.info("City = " + current.city);
 current.setWorkflow(false);
 current.update();

}
catch(err) {
 gs.info("Uncaught error: " + err);
}
})(current, previous);

Thanks Harshvardhan! That worked!