如何在 Coldfusion 中访问 URL 参数 ID,如果它在主题标签 # 之后?



尝试了大约一个小时没有成功。。。(coldfusion8)一个伪问题,但我被卡住了:

我的URL(Jquery Mobile,没有推送状态,这就是为什么它看起来是这样的):

http://www.page.de/test/mem/search.cfm#/test/mem/search.cfm?id=9900000003869

如果我输出:

<cfdump output="e:websitedump.txt" label="catch" var="#url#">

我得到这个:

catch - struct
ID: 9900000003869

但我该如何访问它……我一直在尝试,什么都不起作用:

<cfdump output="e:websitedump.txt" label="catch" var="#id#">
<cfdump output="e:websitedump.txt" label="catch" var="#ID#">
<cfdump output="e:websitedump.txt" label="catch" var="#url.id#">
<cfdump output="e:websitedump.txt" label="catch" var="#url.ID#">
<cfdump output="e:websitedump.txt" label="catch" var="#StructGetValue(url,"id")d#">
...

谢谢你的帮助!

好的。。。这项工作:

URL = http://www.page.de/test/mem/search.cfm#/test/mem/search.cfm?id=9900000003869
<cfset objRequest = GetPageContext().GetRequest() />
<cfset strUrl = right( objRequest.GetRequestUrl().Append( "?" & objRequest.GetQueryString() ).ToString(), 13)>

信用

如果有人发现更容易,请发帖。我会核对答案。

您正试图从txt文件中读取此内容?

你能不能简单地使用:

<cfdump label="catch" var="#url.id#" />

这样行吗?

编辑:

你能试着先捕获和格式化你需要的东西,然后把它写到文件中吗?

例如,尝试使用:

<cfsavecontent variable="myFileContents">
<cfoutput>#url.id#</cfoutput>
</cfsavecontent>
<cffile action="Write" file="e:websitedump.txt" output="#myFileContents#" />

我还没有测试过这个代码,但试试看!

可能也想使用isDefined()检查URL变量

祝你好运。

在Peter和Duncan的评论的提示下,我对片段标识符(这对我来说是一个新术语:()进行了一些研究,从wiki中发现:http://en.wikipedia.org/wiki/Fragment_identifier

片段标识符的功能与URI:也就是说,它的处理是独占客户端,没有来自服务器的参与——当然,服务器通常会提供帮助以确定MIME类型,并且MIME类型确定碎片处理。当代理(如Web浏览器)从Web服务器请求资源,代理将URI发送到服务器,但不发送片段。相反,代理会等待服务器发送资源,然后代理处理资源。

现在,作为您的客户,由于某种原因,您可以访问片段和url变量,使用它是由我的原始帖子完成的。

<cfoutput> 

通常是将变量或其他求值输出到屏幕的方式。

<cfset myName = "Travis">
<cfoutput>Hello, my name is #myName#</cfoutput>

您还可以在不输出任何内容的语句中使用该变量来访问该变量。

<cfset myFullName = myName & " Mak">

您也可以在查询中使用变量

<cfquery name = "qSomeQuery" datasource = "#application.dsn#">
select * from table where id = #url.id#
</cfquery>

但是,在查询中使用它的方法不好,应该始终使用cfquery param。

<cfquery name = "qSomeQuery" datasource = "#application.dsn#">
select * from table where id = <cfqueryparam cfsqltype="cf_sql_integer" value="#url.id#">
</cfquery>

您在测试变量时遇到的问题是由于语法不正确造成的。

<cfif isDefined("url.id")><cfif isDefined(url.id)>更准确的测试是<cfif structKeyExists(url, "id")>

出于某种原因,我的CF服务器会截断#之后url中的所有内容,但你的服务器似乎没有这个问题。正如您的cfdump所说,您可以看到您的url变量,因此"访问"url变量就像使用它一样简单:#url.id#或测试它<cfif isDefined("url.id")>

相关内容

  • 没有找到相关文章

最新更新