2

在尝试了大约一个小时但没有成功之后......(coldfusion8)一个虚拟的问题,但我*卡住了:

我的 URL(Jquery Mobile,没有 pushstate,这就是它看起来像的原因):

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

如果我输出:

<cfdump output="e:\website\dump.txt" label="catch" var="#url#">

我明白了:

catch - struct

ID: 9900000003869

但是我如何访问它......我一直在尝试,没有任何效果:

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

感谢您的帮助!

4

3 回答 3

0

对片段标识符进行一些研究(这对我来说是一个新术语:()由彼得和邓肯的评论提示,我从 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 参数。

<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")>

于 2012-10-09T10:19:26.677 回答
0

好的...这有效:

  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)>

信用

如果有人发现更简单,请发布。我会检查作为答案。

于 2012-10-09T10:29:01.653 回答
-1

你想从一个txt文件中读取这个?

你不能简单地使用:

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

那样有用吗?

编辑:

您可以尝试先捕获和格式化您需要的内容,然后再将其写入文件吗?

例如,尝试使用:

<cfsavecontent variable="myFileContents">
<cfoutput>#url.id#</cfoutput>
</cfsavecontent>

<cffile action="Write" file="e:\website\dump.txt" output="#myFileContents#" />

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

可能也想检查那个URL变量isDefined()

祝你好运。

于 2012-10-09T10:05:00.080 回答