Find your people. Pick a challenge. Ship something real. The CreatorCon Hackathon is coming to the Community Pavilion for one epic night. Every skill level, every role welcome. Join us on May 5th and learn more here.

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

hvrdhn88
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