Html 根据URL参数动态更改页面内容?
我的问题的标题似乎很简单,但下面是我想做的一个例子:Html 根据URL参数动态更改页面内容?,html,coldfusion,hyperlink,article,coldfusion-10,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参数的更改,您会在同一页面上看到不同的内容D
http://www.mayoclinic.com/health/infant-jaundice/DS00107
该页面上发生的情况是,每当您点击链接进入“婴儿黄疸”文章中的某个部分(例如“症状”),它就会提供如下URL参数:
http://www.mayoclinic.com/health/infant-jaundice/DS00107/DSECTION=symptoms
随着DESCTION
参数的更改,您会在同一页面上看到不同的内容DS00107
。内容也会发生变化
有人能告诉我这是如何实现的吗?我认为这是一种if/else情况,编程到页面本身中,根据URL参数显示不同的属性。我使用ColdFusion 10作为我的web服务器
我不是在问应该使用什么技术,例如AJAX。我不介意有一个完全重新加载的页面。但是它从哪里获得页面上各种HTML标记和div的正确文章信息呢?它应该在if/else语句中,还是应该存储在数据库中
我在想把它存储在数据库里可能会很乏味。。。您应该将所有段落和有序列表信息存储在一个表中。但是这是正确的方法吗?对于最优雅的行为,您可能希望使用服务器端脚本语言(如JSP/PHP)来实现这一点。这可以使用Ajax和任何服务器端编程技术(如servlet)来实现,在AJAX中,整个页面不通过点击URL来加载,我们可以定义页面的哪个部分应该被重放。例如,当你拖动或缩放或做任何其他鼠标事件时,考虑页面上的谷歌地图,并产生一个动作,然后发送到服务器,它从服务器接收数据,只更改页面的某个部分,而不是重新加载整个页面。您可以尝试存储页面详细信息: URL(指向要包含的文件) 页面名称 等等
在db表中,然后使用cfquery显示与url参数对应的页面。您看到的是url重写。这可以在web服务器中完成,而不必在ColdFusion/PHP ext中使用。web服务器将要做的是将url
mayoclinic.com/health/baby jaundice/DS00107/dssection=symptoms
重写到类似以下链接:mayoclinic.com/health/baby jaundice/DS00107/index.cfm?dssection=symptoms
对于在页面中显示内容,我将使用切换状态,而不是使用一系列if/else,如果您有2-3个以上的可能显示。您可以根据需要使用任意数量的案例块
<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重写的思想
补充:
我想知道他们是否使用了数据库查询而不是if/else语句
可以。对于查询驱动的结果,可以执行以下操作:
<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>
选择htmlText
从页数
其中page='dir/index.cfm'
和内容
#pageContent.htmlText[1]#
如果内容是静态的,并且很少更新,那么另一种选择是查看包含,并尝试利用基于内容执行代码的能力
<cfinclude template="./includes/symtoms.cfm"> or <cfinclude template="./includes/#url.DSECTION#.cfm">
或
是的,我可以在ColdFusion中执行if/else语句。但它是这样做的吗?最后,我将为页面上的每个HTML标记提供大约10条if/else语句,以确保它为每个页面显示正确的信息。我想知道他们是否使用了数据库查询而不是if/else语句?您认为使用cfswitch有条件地将文章样式信息输出到页面比将文章存储在数据库中更好吗?你认为梅奥诊所就是这样做的吗?在我第一次发布后,我看到了你对斯里尼的评论。我添加了其他选项。我还没有完全使用模板路径中的变量,但是我的一个测试通过了;我猜他们是在从数据库中提取他们的内容。对于像这样的SEO,你可以看看WordPress,看看他们是如何利用URL重写的。我知道WordPress将所有内容保存在数据库中。这是否已经通过一个框架完成了?其他页面如何处理同一问题?