html - 根据URL参数动态改变页面内容?

标签 html coldfusion hyperlink article coldfusion-10

我的问题的标题看起来很简单,但这是我想要做的事情的示例:

http://www.mayoclinic.com/health/infant-jaundice/DS00107

该页面上发生的情况是,每当您单击链接转到“婴儿黄疸”文章中的某个部分(例如“症状”)时,它会提供如下 URL 参数:

http://www.mayoclinic.com/health/infant-jaundice/DS00107/DSECTION=symptoms

作为DESCTION参数改变,同一页面得到不同的内容DS00107 。内容也发生变化<meta keywords>

有人可以告诉我这是如何实现的吗?我认为这是一个 if/else 情况被编程到页面本身中,以根据 URL 参数显示不同的属性。我使用 ColdFusion 10 作为我的 Web 服务器。

我不是问要使用什么技术,例如 Ajax 。我不介意有一个完全重新加载的页面。但是,它从哪里获取页面上各种 HTML 标签和 DIV 的正确文章信息呢?它应该在 if/else 语句中还是应该存储在数据库中?

我认为将其存储在数据库中可能会很乏味......您可以将所有段落和有序列表信息存储在表中。但这是正确的方法吗?

最佳答案

您看到的是 URL 重写。这可以在 Web 服务器内完成,而不是在 ColdFusion/PHP ext 中完成。 Web 服务器要做的是将 url mayoclinic.com/health/infant-jaundice/DS00107/DSECTION=symptoms 重写为类似以下的链接:mayoclinic.com/health/infant-jaundice/DS00107/index.cfm?DSECTION=症状

为了在页面中显示内容,如果您有超过 2-3 个可能的显示,我会使用 switch 语句,而不是使用一系列 if/else。您可以根据需要使用任意数量的 case block 。

<cfswitch expression=”#url.DSECTION#>
    <cfcase value="symptoms">  
        <!---   symptoms code / html here --->
    </cfcase>
    <cfcase value="causes">  
        <!---   causes code / html here --->
    </cfcase>
    <cfdefaultcase>
        <!---   default code / html here --->
    </cfdefaultcase>
</cfswitch>

这是一个非常简单的例子,用来说明URL重写的思想。

添加:

I was wondering if perhaps they were using a database query rather than if/else statements?

是的,你可以。对于查询驱动的结果,你可以这样做:

<cfquery name="pageContent" datasource="yourDatasource">
    SELECT htmlText 
    FROM pages
    WHERE page = 'dir/index.cfm'
    AND content <cfqueryparam cfsqltype="cf_sql_varchar" value="#url.DSECTION#">
</cfquery>
<cfoutput>#pageContent.htmlText[1]#</cfoutput>

如果内容是静态的,并且很少更新,另一个选择是研究包含内容并尝试利用基于内容执行代码的能力。

<cfinclude template="./includes/symtoms.cfm"> or <cfinclude template="./includes/#url.DSECTION#.cfm">

关于html - 根据URL参数动态改变页面内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17300267/

相关文章:

javascript - 是否有一个插件可以为 jquery 生成 emmet 样式的 html?

coldfusion - onApplicationStart 在 ColdFusion 中是个好主意吗?

正则表达式替换两个哈希符号之间、两个标签之间的文本,但保留其他所有内容

jquery - 作为伪链接的文本元素

Javadoc 内部链接在 doxygen 中不起作用

javascript - 如何使用 jQuery 或 JavaScript 对表行进行分组并过滤组?

javascript - bootstrap 3.2 header 在 firefox 和 IE 中损坏。在 chrome + opera 中运行良好

coldfusion - CFM 与 CFC 中的范围访问性能

html - 使用 `#` 登录链接是否可以接受,只是为了避免样式问题?

php - 当图像不存在时使用哪种方法