Skip to main content
Eleeist
Participating Frequently
March 2, 2012
Answered

Update page title

  • March 2, 2012
  • 1 reply
  • 2156 views

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?

    This topic has been closed for replies.
    Correct answer Dan_Bracuk

    I created this example and, suprisingly it works:

    <cfform>

              <cfinput type="text" name="websiteTitle">

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

    </cfform>

    <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>

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

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

              <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>

    </body>

    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...


    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.    

    1 reply

    BKBK
    Community Expert
    Community Expert
    March 2, 2012

    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">

    Eleeist
    EleeistAuthor
    Participating Frequently
    March 2, 2012

    Thanks. However, it doesn't seem to work. The title still does not refresh after the form with settings is submitted, but all the other settings like website footer do update with new values immediately.

    Here is my current header:

    <!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">

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

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

    <head>

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

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

              <title>

                        <cfoutput>#qSettings.websiteTitle#</cfoutput>

              </title>

    </head>

    Owainnorth
    Inspiring
    March 2, 2012

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