如何获取网址参数& Coldfusion的价值? 对于Ex: -
我的网址是
test.cfm?par1=val1&par2=val2&par3=val3
是否可以直接获取第二个参数及其值?
<cfset param='#url.par2#'>
我可以获得par2的值,
但我的参数是从其他页面动态生成并传递到这里(par2可能是下一次abc2,xyz2等..)
所以我认为更好的方法是获得参数和值在第二个位置(Possition不会一直改变)。
任何想法我怎样才能得到它?
提前致谢
答案 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,语法略有不同。