我怎样才能获得URL参数& Coldfusion的价值?

时间:2009-12-14 22:57:12

标签: coldfusion

如何获取网址参数& Coldfusion的价值? 对于Ex: -

我的网址是

test.cfm?par1=val1&par2=val2&par3=val3

是否可以直接获取第二个参数及其值?

<cfset param='#url.par2#'>我可以获得par2的值, 但我的参数是从其他页面动态生成并传递到这里(par2可能是下一次abc2,xyz2等..) 所以我认为更好的方法是获得参数和值在第二个位置(Possition不会一直改变)。

任何想法我怎样才能得到它?

提前致谢

5 个答案:

答案 0 :(得分:21)

您还可以将url范围作为结构进行访问,这样您就可以获得:

<cfset param2 = url['param2'] />

如果您可能拥有一堆字段的命名约定,这将非常有用。假设您正在收集名称和电子邮件,如下所示:

email1=foo@bar.com&name1=Fred&email2=xxx@yyy.com&name2=Sally

你可以这样写:

<cfloop condition="someCondition">
    <cfset email = url['email' & i] />
    <cfset name = url['name' & i] />
    <!--- Do something --->
    <cfset i++ />
</cfloop>

答案 1 :(得分:5)

查询字符串变量的顺序不相关,或者您的应用程序不应该期望它是相关的。我认为你最好的办法是让另一个变量是一个变量列表。像这样:

test.cfm?par1=val1&par2=val2&par3=val3&list=var1,var2,var3

注意新变量“list”的存在。

因此,您首先获取“list”的值,然后将其作为第二个条目“var2”并在URL范围中引用它。您可以轻松地抽象所有这些,因此变量的名称本身并不重要。为了防止错过预期,必须进行良好的错误处理。

答案 2 :(得分:5)

   <cfset Param2 = ListGetAt(CGI.QUERY_STRING,2,"&")>

答案 3 :(得分:3)

要获取可以使用structKeyList(url)或structKeyArray(url)的params列表,然后通过url范围访问这些参数,如#url ['par1']#

<cfset params = structKeyList(url) />
<cfdump label="parameters" var="#params#" />

<cfloop index="ix" list="#params#">
    <cfoutput><div>#ix# = #url[ix]#</div></cfoutput>
</cfloop>

正如其他人所提到的,你真的不应该依赖参数的顺序

答案 4 :(得分:1)

<cfscript>
    par2=getToken(cgi.query_string,2,"&"); // contains "par2=val2"
    par2name=getToken(par2,1,"="); // contains "par2"
    par2value=urlDecode(getToken(par2,2,"=")); // contains "val2"
</cfscript>

你也可以使用listGetAt函数,它基本上等同于getToken,语法略有不同。