0

I have used Server side javascript with a mix of ampscript to handle the error but the issue is even for the correct syntax the page is being redirected to error. When i remove the SSJS exception handle code from the page then code works correctly. Below is my code.

<script runat="server" type="text/javascript">
Platform.Load("core","1"); 
try {
</script>
%%[

/*fetch the id form URL*/
SET @cid = Queryparameter("cid")

/*check if the id is empty*/
if empty(@cid) then
    redirect(CloudPagesURL(20)) /*redirects  to error page*/
endif

/*personal information*/
SET @firstName = RequestParameter("First_Name__c")
SET @lastName = RequestParameter("Last_Name__c")
SET @jobRole = RequestParameter("Job__c")
SET @country = RequestParameter("country")
SET @state = RequestParameter("state")
SET @city = RequestParameter("City__c")
SET @email = RequestParameter("Email__c")
SET @mobilePhone = RequestParameter("Phone__c")
SET @training = "True"/* change the organization to training and assign the values*/

/*Your interest*/
SET @Accessibility = RequestParameter("int1")
if empty(@Accessibility) then
    SET @Accessibility = "False"
endif

SET @Agile = RequestParameter("int2")
if empty(@Agile) then
    SET @Agile = "False"
endif

SET @Automation = RequestParameter("int3")
if empty(@Automation) then
    SET @Automation = "False"
endif

SET @BusinessAnalysis = RequestParameter("int4")
if empty(@BusinessAnalysis) then
    SET @BusinessAnalysis = "False"
endif

SET @Cloud = RequestParameter("int5")
if empty(@Cloud) then
    SET @Cloud = "False"
endif

SET @CrowdTesting = RequestParameter("int6")
if empty(@CrowdTesting) then
    SET @CrowdTesting = "False"
endif

SET @DevOps = RequestParameter("int7")
if empty(@DevOps) then
    SET @DevOps = "False"
endif

SET @Digital = RequestParameter("int8")
if empty(@Digital) then
    SET @Digital = "False"
endif

SET @Environments = RequestParameter("int9")
if empty(@Environments) then
    SET @Environments = "False"
endif

SET @IoTandWearable = RequestParameter("int10")
if empty(@IoTandWearable) then
    SET @IoTandWearable = "False"
endif

SET @ManagedServices = RequestParameter("int11")
if empty(@ManagedServices) then
    SET @ManagedServices = "False"
endif

SET @ManualTesting = RequestParameter("int12")
if empty(@ManualTesting) then
    SET @ManualTesting = "False"
endif

SET @Mobile = RequestParameter("int13")
if empty(@Mobile) then
    SET @Mobile = "False"
endif

SET @Monitoring = RequestParameter("int14")
if empty(@Monitoring) then
    SET @Monitoring = "False"
endif

SET @Offshoring = RequestParameter("int15")
if empty(@Offshoring) then
    SET @Offshoring = "False"
endif

SET @OperationalReadiness = RequestParameter("int16")
if empty(@OperationalReadiness) then
    SET @OperationalReadiness = "False"
endif

SET @Performance = RequestParameter("int17")
if empty(@Performance) then
    SET @Performance = "False"
endif

SET @ProcessOptimisation = RequestParameter("int18")
if empty(@ProcessOptimisation) then
    SET @ProcessOptimisation = "False"
endif

SET @ProjectManagement = RequestParameter("int19")
if empty(@ProjectManagement) then
    SET @ProjectManagement = "False"
endif

SET @Security = RequestParameter("int20")
if empty(@Security) then
    SET @Security = "False"
endif

SET @TestMgmtandStrategy = RequestParameter("int21")
if empty(@TestMgmtandStrategy) then
    SET @TestMgmtandStrategy = "False"
endif

SET @Virtualisation = RequestParameter("int22")
if empty(@Virtualisation) then
    SET @Virtualisation = "False"
endif

/*Your communication preference*/
SET @Articles_Surveys_Statistics = RequestParameter("arsust1")
if empty(@Articles_Surveys_Statistics) then
    SET @Articles_Surveys_Statistics = "False"
endif

SET @ProductReleases_InfoandSpecials = RequestParameter("pris1")
if empty(@ProductReleases_InfoandSpecials) then
SET @ProductReleases_InfoandSpecials = "False"
endif

SET @WebinarandEventInvitations = RequestParameter("wei1")
if empty(@WebinarandEventInvitations) then
SET @WebinarandEventInvitations = "False"
endif

/*check if the user exist or not*/
SET @lookupContact = RetrieveSalesforceObjects("Contact","Id", "Id","=", @cid)
if rowcount(@lookupContact) != 0 then

    SET @updateContact = UpdateSingleSalesforceObject("Contact", @cid, "FirstName", @firstName, "LastName", @lastName, "Job_Role__c", @jobRole, "Email", @email, "MailingCountry", @country, "MailingState", @state, "MailingCity", @city, "MobilePhone", @mobilePhone, "Accessibility__c",@Accessibility,"Agile__c",@Agile,"Automation__c",@Automation,"Business_Analysis__c",@BusinessAnalysis,"Cloud__c",@Cloud,"Crowd_Testing__c",@CrowdTesting,"DevOps__c",@DevOps,"Digital__c",@Digital,"Environments__c",@Environments,"IoT_Wearables__c",@IoTandWearable,"Managed_Services__c",@ManagedServices,"Manual_Testing__c",@ManualTesting,"Mobile__c",@mobilePhone,"Monitoring__c",@Monitoring,"Off_Shoring__c",@Offshoring,"Operational_Readiness__c",@OperationalReadiness,"Performance__c",@Performance,"Process_Optimisation__c",@ProcessOptimisation, "Project_Management__c",@ProjectManagement,"Security__c",@Security,"Test_Mgmt_Strategy__c",@TestMgmtandStrategy,"Virtualisation__c",@Virtualisation,"Articles_Surveys_Statistics__c",@Articles_Surveys_Statistics,"Product_Info_Specials__c",@ProductReleases_InfoandSpecials,"Webinar_Event_Invitations__c",@WebinarandEventInvitations, "Training__C", @training )
else
    redirect(CloudPagesURL(20)) /*redirects  to error page*/
endif

if @updateContact == 1 then
    redirect(CloudPagesURL(21)) /*redirects  to thank you page*/
else
    redirect(CloudPagesURL(20)) /*redirects  to error page*/
endif
]%%
<script type="text/javascript" runat="server">
}
catch (e) {

</script>  
%%[redirect(CloudPagesURL(20)]%%
<script type="text/javascript" runat="server">
}
</script>

1 Answer 1

5

First, you're not writing out your error in your catch block and you're redirecting as soon as an error is encountered.

<script runat="server" type="text/javascript">
Platform.Load("core","1"); 
try {
</script>
%%[

/* AMPScript here */
]%%
<script type="text/javascript" runat="server">
}
catch (e) {

  Write("<br>e: " + e);
</script>

  %%[

    /* uncomment this after verifying the error */ 
    /* redirect(CloudPagesURL(20)) */ 

  ]%%

<script type="text/javascript" runat="server">
}
</script>  
3
  • I have tried this and it worked perfectly with custom preference centre, but the issue is with the backend processing ampscript code. The issue is, it is always redirected to error page once I put this part of code. i have tried using catch (e){ var responseContent = HTTP.Get("http://pub.s1.exacttarget.com/30xjaa1kboi"); Write(responseContent.Content); }. let me know if this helps
    – Abhishek
    Commented May 24, 2017 at 1:01
  • 1
    Also, the final redirect call has a typo in it - %%[redirect(CloudPagesURL(20)]%%. It's missing a closing parentheses. It should be %%[redirect(CloudPagesURL(20))]%% Commented May 25, 2017 at 11:11
  • Ah, yes. Updated Commented May 27, 2017 at 12:20

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .