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

did you put the log ? if yes are you getting address value in log ?

can you please share the screenshot of your rest message method ? 

Bobby20
Giga Contributor

 

GGG: The BR is on the x_275105_iplookup_ipaddressinfo table and it runs async when insert or update occurs.

Hi there,

Maybe another one:

var responseObj = JSON.parse(responseBody);

This uses responseBody, though responseBody is not set at that point yet. It's set far after in the script.

var responseBody = response.getBody();

Kind regards,
Mark

 

Kind regards,

 

Mark Roethof

Independent ServiceNow Consultant

10x ServiceNow MVP

---

 

~444 Articles, Blogs, Videos, Podcasts, Share projects - Experiences from the field

LinkedIn

Bobby20
Giga Contributor

Here's the screenshot you requested:

find_real_file.png