Expand my Community achievements bar.

Join us for our second AMA on experimentation and personalization strategies with Target, occurring on June 3rd!

Mark Solution

This conversation has been locked due to inactivity. Please create a new post.

SOLVED

JS if/else statement not firing from Custom Code in activity

Avatar

Level 2

Hello all,

 

I've been running into an issue with getting the 'else' portion of a block of code to fire in one of my activities and wanted to see if anyone had any insight or could point me in the right direction. I have experience as a front-end dev so am somewhat familiar with JS, but admittedly have not kept up with it as I've moved into a full-time A/B testing role, so I'm definitely rusty.

Basically we're trying to get our content to change in Target based on a variable value. The custom code in Target does fire, however it fires even if the variable value is incorrect. I'm including a screenshot of what I'm seeing, but the 'Modified with Target...' copy should not be displaying along with the banner image, as the ui.userInfo.bannerName value is set to HYSA 2 but was set to 'HYSA 1' in this case upon launching this site in our dev environment.

 

amex-target.jpg

 

The code I'm using in my Target activity is below: 

 

<script>
adobe.target.getOffer({
  "mbox": "target-global-mbox",
  "success": function(offer) {
  console.log('success');
if ('ui.userInfo.bannerName == "HYSA 1"'){
console.log('param works');
  $('#PromoBanner #AmexPromoBanner #adContent .cta #PromoBannerTitle').text('Modified with Target - 23-6484790928A');
  $('#PromoBanner #AmexPromoBanner #heroImage').attr("src",   "https://www.transunion.com/content/dam/transunion/global/consumer/images/testing/amex/planit.jpg");
} else {
  console.log('param does not works');
  $('#PromoBanner #AmexPromoBanner #heroImage').attr("src", "https://amexccvd-canary.slo-devweb.truelink.com/sites/CreditView/assets/images/promo-banner/mycred.p...");
}
},
"error": function(status, error) {
console.log('error');
},
"timeout": 2000
});
</script>

 

Please let me know if anyone can help - thank you!

Dan 

Topics

Topics help categorize Community content and increase your ability to discover relevant content.

1 Accepted Solution

Avatar

Correct answer by
Community Advisor

Hi @ddiaczun,

if I see it correctly your problem is that the condition of ui.userInfo.bannerName == "HYSA 1" is met - but you see in the Console the value HYSA 2, right? If so, it looks to me like it's a timing issue - that the if condition in the script is executed too early.

 

Hope I have understood your problem correctly.

Best regards

View solution in original post

2 Replies

Avatar

Correct answer by
Community Advisor

Hi @ddiaczun,

if I see it correctly your problem is that the condition of ui.userInfo.bannerName == "HYSA 1" is met - but you see in the Console the value HYSA 2, right? If so, it looks to me like it's a timing issue - that the if condition in the script is executed too early.

 

Hope I have understood your problem correctly.

Best regards

Avatar

Level 2

Hi @Perrin_Ennen 

 

That seems to be the case - we have a set of about 10 values for ui.userInfo.bannerName however the 'else' condition does not fire on any of them. 

 

In this case would I need a timer function to check for the correct value every 50-100 milliseconds? I'm not very familiar with how the ui.userInfo.bannerName was created on our back-end so unfortunately cannot provide much additional context at the moment, but I can reach out to the engineering team that worked on this. 

 

Please let me know when you've had a moment to review - thanks!