2

我的问题的标题似乎很简单,但这是我想要做的一个例子:

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 语句中还是应该存储在数据库中?

我在想将它存储在数据库中可能会很乏味……您会将所有段落和有序列表信息存储在一个表中。但这是正确的方法吗?

4

4 回答 4

1

那么您可以尝试存储您的页面详细信息:

URL(指向要包含的文件)页面名称等。

在 db 表中,然后使用 cfquery 显示与 url 参数对应的页面。

于 2013-06-25T14:46:56.680 回答
1

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

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

<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">
于 2013-06-25T19:12:25.570 回答
0

这可以使用 Ajax 和任何服务器端编程技术(如 Servlets、Spring MVC 或 PHP)来完成。在 Ajax 中,通过单击 url 不会加载整个页面,我们可以定义页面的哪个部分应该重新加载,例如考虑谷歌地图在页面上,当您拖动或缩放或执行任何其他鼠标事件时,会出现一个动作并将其发送到服务器,它从服务器接收数据并仅更改页面的某些部分,而不是重新加载整个页面。

于 2013-06-25T14:44:44.833 回答
0

对于大多数优雅的行为,您可能希望使用 JSP/PHP 之类的服务器端脚本语言来执行此操作。

于 2013-06-25T14:39:36.700 回答