我的问题标题看似简单,但这是我想要做的一个例子:
http://www.mayoclinic.com/health/infant-jaundice/DS00107
在该页面上发生的事情是,当您点击“Infant Jaundice”文章中的某个部分(例如“症状”)时,它会提供如下URL参数:
http://www.mayoclinic.com/health/infant-jaundice/DS00107/DSECTION=symptoms
随着DESCTION
参数的更改,您会在同一页DS00107
上获得不同的内容。内容更改以及<meta keywords>
。
有人可以告诉我这是如何实现的吗?我认为这是一个if / else情境编程到页面本身,根据URL参数显示不同的属性。我使用ColdFusion 10作为我的网络服务器。
我不是在问什么技术可以使用,例如AJAX。我不介意有一个完全重新加载的页面。但是从哪里可以获得页面上各种HTML标签和DIV的正确文章信息?它应该在if / else语句中还是应该存储在数据库中?
我在考虑将其存储在数据库中可能会很乏味......您可以将所有段落和有序列表信息存储在表格中。但这是正确的方法吗?
答案 0 :(得分:1)
您可以尝试存储您的网页详情:
URL(指向要包含的文件) 页面名称 等等。
在db表中,然后使用cfquery显示与url参数对应的页面。
答案 1 :(得分:1)
您所看到的是网址重写。这可以在Web服务器中完成,而不是在ColdFusion / PHP ext中进行necisarlay。 Web服务器将执行的操作是将网址mayoclinic.com/health/infant-jaundice/DS00107/DSECTION=symptoms
重写为类似以下内容的链接:mayoclinic.com/health/infant-jaundice/DS00107/index.cfm?DSECTION=symptoms
。
为了在页面中显示内容,如果您有超过2-3个可能的显示,我将使用切换器状态而不是使用一系列if / else。您可以根据需要使用尽可能多的案例块。
<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>
如果内容是静态的,很少更新,另一个选择是查看包含并尝试利用基于内容执行代码的能力。
<cfinclude template="./includes/symtoms.cfm"> or <cfinclude template="./includes/#url.DSECTION#.cfm">
答案 2 :(得分:0)
对于大多数优雅行为,您可能希望使用服务器端脚本语言(如JSP / PHP)执行此操作。
答案 3 :(得分:0)
这可以使用Ajax与任何服务器端编程技术(如Servlet,Spring MVC或PHP)来完成。在Ajax中,通过单击url来加载整个页面,我们可以定义页面的哪些部分应该被重新调用,例如考虑当您拖动或缩放或执行任何其他鼠标事件时,页面上的谷歌地图会产生一个动作并发送到服务器,它从服务器接收数据并仅更改页面的某些部分而不是重新加载整个页面。