Skip navigation
Currently Being Moderated

Update page title

Mar 2, 2012 8:54 AM

Hi,

I create a form that allows user to change the HTML page title. It works, but after the form is submitted with the new page title, the title does not change immediately. The user has to refresh the page or go to another page to see the changed title. Is there a way to completely refresh the page on form submit and immediately show the results (ie new title) to the user?

 
Replies
  • Currently Being Moderated
    Mar 2, 2012 9:16 AM   in reply to Eleeist

    Could be that what you call the "new page" isn't the new page at all. The browser may be displaying a cached copy of the old page. It might help for you to add not just the title, but the following headers as well:

     

    <cfheader name="Cache-Control" value="no-cache,no-store,must-revalidate">

    <cfheader name="Pragma" value="no-cache">

     
    |
    Mark as:
  • Currently Being Moderated
    Mar 2, 2012 9:37 AM   in reply to Eleeist

    I take it you are actually setting qSettings.websiteTitle *before* that code snippet there?

     
    |
    Mark as:
  • Currently Being Moderated
    Mar 2, 2012 9:46 AM   in reply to Eleeist

    In which case take a copy of your entire page and cut it down to a minimal working example, then post your code on here so one of us can test it.

     
    |
    Mark as:
  • Currently Being Moderated
    Mar 2, 2012 11:28 AM   in reply to Eleeist

    Eleeist wrote:

     

    Maybe the reason for this to work is that I put the form ABOVE the header...

    Put the form in the body, where it has to be anyway, and tell us what happens.

     
    |
    Mark as:
  • Currently Being Moderated
    Mar 2, 2012 11:38 AM   in reply to Eleeist

    Quick feedback. From my initial tests it appears to be unrelated to cache or to the position of the form.

     
    |
    Mark as:
  • Currently Being Moderated
    Mar 2, 2012 11:54 AM   in reply to Eleeist

    Regarding:

    I cannot post my exact case example, as it is pulling data from the database...

     

    Maybe the reason for this to work is that I put the form ABOVE the header...

     

     

    The position of the form is irrelevent.  All that matters is that you set the variable before you attempt to use it.

     

    To move forward, I suggest starting with the page that works, and start adding bits from the page that doesn't work until you have completely re-assembled it.  And remember, test early, test often, and test again.    

     
    |
    Mark as:
  • Currently Being Moderated
    Mar 2, 2012 1:55 PM   in reply to Eleeist

    Eleeist wrote:

     

    I have finally got to the root of the problem - the sequence in which code is executed.

     

    I have fixed this and now everything works just fine. Thanks everyone for help .

    Great. I'll just append what I ended up with, just in case it contains something you might want to use.

     

    <cfif isDefined("form.submit")>

              <cfset websiteTitle = form.websiteTitle>

    <cfelse>

              <cfset websiteTitle = "no_title">

    </cfif>

     

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

              "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <html xmlns="http://www.w3.org/1999/xhtml">

    <head>

              <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

              <link rel="stylesheet" type="text/css" href="/styles/stylesheet.css"/>

              <title>

                        <cfoutput>#websiteTitle#</cfoutput>

              </title>

    </head>

    <body>

    <cfform>

              <cfinput type="text" name="websiteTitle" required="yes" message="Supply the title">

              <cfinput type="submit" name="submit">

    </cfform>

    </body>

     
    |
    Mark as:
  • Currently Being Moderated
    Mar 2, 2012 11:38 PM   in reply to BKBK

    Often the simplest explanation is the one to try first

     

    As an improvement to your code, you can replace the five-line if-statement with a one-liner:

     

    <cfparam name="form.websiteTitle" default="no_title" />

     

    That'll achieve the same thing.

     

    O.

     
    |
    Mark as:

More Like This

  • Retrieving data ...

Bookmarked By (0)

Answers + Points = Status

  • 10 points awarded for Correct Answers
  • 5 points awarded for Helpful Answers
  • 10,000+ points
  • 1,001-10,000 points
  • 501-1,000 points
  • 5-500 points