如何在Coldfusion中获取URL参数和值?

CFU*_*ser 7 coldfusion

如何在Coldfusion中获取URL参数和值?对于Ex: -

我的网址是

test.cfm?par1=val1&par2=val2&par3=val3
Run Code Online (Sandbox Code Playgroud)

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

<cfset param='#url.par2#'>我能得到PAR2的价值,但我的参数dynamicically从其他网页产生并传递到这里(PAR2可能是下一次ABC2,XYZ2等.)所以,我认为更好的办法是让在第二Possition的参数和值( Possition总是不会改变).

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

提前致谢

Bia*_*cki 20

您还可以url作为结构访问范围,因此您可以获得:

<cfset param2 = url['param2'] />
Run Code Online (Sandbox Code Playgroud)

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

email1=foo@bar.com&name1=Fred&email2=xxx@yyy.com&name2=Sally
Run Code Online (Sandbox Code Playgroud)

你可以这样写:

<cfloop condition="someCondition">
    <cfset email = url['email' & i] />
    <cfset name = url['name' & i] />
    <!--- Do something --->
    <cfset i++ />
</cfloop>
Run Code Online (Sandbox Code Playgroud)


Cod*_*lan 5

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

test.cfm?par1=val1&par2=val2&par3=val3&list=var1,var2,var3
Run Code Online (Sandbox Code Playgroud)

注意新变量"list"的存在.

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


kev*_*ink 5

   <cfset Param2 = ListGetAt(CGI.QUERY_STRING,2,"&")>
Run Code Online (Sandbox Code Playgroud)

  • 这是错误的,因为它不会对值进行URL解码. (4认同)
  • 我不知道你是否一定可以指望CGI.QUERY_STRING中的URL参数始终处于相同的顺序. (2认同)